{"version":3,"file":"formular-dev.cjs","sources":["../src/schema/base/prototype/default.ts","../src/schema/base/prototype/nullable.ts","../src/schema/base/prototype/optional.ts","../src/schema/error/error.ts","../src/schema/constants.ts","../src/schema/error/index.ts","../src/schema/base/prototype/parse.ts","../src/schema/base/prototype/refine.ts","../src/schema/base/prototype/safeParse.ts","../src/schema/base/prototype/transform.ts","../src/schema/base/base.ts","../src/schema/base/index.ts","../src/schema/array/prototype/length.ts","../src/schema/array/prototype/max.ts","../src/schema/array/prototype/min.ts","../src/schema/array/prototype/nonempty.ts","../src/schema/array/array.ts","../src/schema/boolean/prototype/false.ts","../src/schema/boolean/prototype/true.ts","../src/schema/boolean/boolean.ts","../src/schema/date/prototype/max.ts","../src/schema/date/prototype/min.ts","../src/schema/date/date.ts","../src/schema/enum/enum.ts","../src/schema/literal/literal.ts","../src/schema/number/prototype/debounce.ts","../src/schema/number/prototype/finite.ts","../src/schema/number/prototype/int.ts","../src/schema/number/prototype/max.ts","../src/schema/number/prototype/min.ts","../src/schema/number/prototype/multipleOf.ts","../src/schema/number/prototype/negative.ts","../src/schema/number/prototype/nonnegative.ts","../src/schema/number/prototype/nonpositive.ts","../src/schema/number/prototype/positive.ts","../src/schema/number/prototype/safe.ts","../src/schema/number/number.ts","../src/schema/object/prototype/extend.ts","../src/schema/object/prototype/merge.ts","../src/schema/object/prototype/omit.ts","../src/schema/object/prototype/partial.ts","../src/schema/object/prototype/pick.ts","../src/schema/object/prototype/required.ts","../src/schema/object/object.ts","../src/schema/record/record.ts","../src/schema/string/prototype/ahv.ts","../src/schema/string/prototype/debounce.ts","../src/schema/string/prototype/email.ts","../src/schema/string/prototype/length.ts","../src/schema/string/prototype/max.ts","../src/schema/string/prototype/min.ts","../src/schema/string/prototype/nonempty.ts","../src/schema/string/prototype/pattern.ts","../src/schema/string/prototype/phone.ts","../src/schema/string/prototype/postalCode.ts","../src/schema/string/prototype/toLowerCase.ts","../src/schema/string/prototype/toUpperCase.ts","../src/schema/string/prototype/trim.ts","../src/schema/string/prototype/url.ts","../src/schema/string/string.ts","../src/schema/union/union.ts","../src/schema/builder.ts","../src/schema/presets.ts","../src/core/managers/formular-manager/formular-manager.types.ts","../src/core/managers/service-manager/prototype/create-scope.ts","../src/core/managers/log-manager/log-manager.ts","../src/core/managers/service-manager/prototype/dispose.ts","../src/core/managers/service-manager/prototype/find-service-descriptor.ts","../src/core/managers/service-manager/prototype/get-service-name.ts","../src/core/managers/service-manager/prototype/is-registered.ts","../src/core/managers/service-manager/prototype/lazy.ts","../src/core/managers/service-manager/prototype/register.ts","../src/core/managers/service-manager/prototype/register-proxy/getter.ts","../src/core/managers/service-manager/prototype/register-class.ts","../src/core/managers/service-manager/prototype/register-instance.ts","../src/core/managers/service-manager/prototype/resolve.ts","../src/core/managers/service-manager/prototype/throw-if-disposed.ts","../src/core/managers/service-manager/prototype/try-resolve.ts","../src/core/managers/service-manager/prototype/validate-no-cycles.ts","../src/core/managers/service-manager/service-manager.ts","../src/core/framework/events/to-flags.ts","../src/core/framework/events/new-event.ts","../src/core/managers/configuration-manager/interfaces/i-configuration-manager.ts","../src/core/managers/dom-manager/dom-manager.types.ts","../src/core/input-engine/core/input-base/dependencies/use-dom-manager.ts","../src/core/input-engine/core/input-base/dependencies/use-notification-manager.ts","../src/core/managers/style-manager/style-manager.types.ts","../src/core/input-engine/core/input-base/dependencies/use-style-manager.ts","../src/core/input-engine/core/input-base/dependencies/use-tracking-manager.ts","../src/core/managers/validation-manager/constants/s-validation-manager.ts","../src/core/managers/validation-manager/constants/validation-errors-codes.ts","../src/core/managers/validation-manager/factory/new-validation-result.ts","../src/core/managers/validation-manager/factory/new-validation-results.ts","../src/core/input-engine/core/input-base/dependencies/use-validation-manager.ts","../src/core/managers/value-manager/value-manager.types.ts","../src/core/input-engine/core/input-base/dependencies/use-value-manager.ts","../src/core/input-engine/core/input-base/prototype/check-initialized.ts","../src/core/input-engine/core/input-base/prototype/clear.ts","../src/core/input-engine/core/input-base/prototype/enable.ts","../src/core/input-engine/core/input-base/prototype/focus.ts","../src/core/input-engine/core/input-base/events/on-blur-handle.ts","../src/core/input-engine/core/input-base/prototype/handle-on-blur.ts","../src/core/input-engine/core/input-base/events/on-clear-handle.ts","../src/core/input-engine/core/input-base/prototype/handle-on-clear.ts","../src/core/input-engine/core/input-base/events/on-focus-handle.ts","../src/core/input-engine/core/input-base/prototype/handle-on-focus.ts","../src/core/input-engine/core/input-base/events/on-key-press-handler.ts","../src/core/input-engine/core/input-base/prototype/handle-on-key-press.ts","../src/core/input-engine/core/input-base/events/on-key-up-handler.ts","../src/core/input-engine/core/input-base/prototype/handle-on-key-up.ts","../src/core/input-engine/core/input-base/shared/validation-guards.ts","../src/core/input-engine/core/input-base/shared/validation-hooks.ts","../src/core/input-engine/core/input-base/shared/validation-notifications.ts","../src/core/input-engine/core/input-base/shared/validation-state.ts","../src/core/input-engine/core/accessibility/arias.ts","../src/core/input-engine/core/input-base/shared/validation-styles.ts","../src/core/input-engine/core/input-base/shared/validation-processor.ts","../src/core/input-engine/core/input-base/prototype/handle-validation.ts","../src/core/input-engine/core/input-base/prototype/handle-validation-async.ts","../src/core/input-engine/core/input-base/prototype/has-changes.ts","../src/core/framework/exceptions/exception-manager.ts","../src/core/managers/notification-manager/utils/new-notification-visitor.ts","../src/core/input-engine/core/abstract/abstract-initializer.ts","../src/core/input-engine/core/input-base/prototype/intialize.ts","../src/core/input-engine/core/input-base/prototype/intialize-properties.ts","../src/core/input-engine/core/input-base/prototype/message.ts","../src/core/input-engine/core/input-base/prototype/refresh-ui.ts","../src/core/input-engine/core/input-base/prototype/set-focus.ts","../src/core/input-engine/core/input-base/prototype/set-input-busy.ts","../src/core/input-engine/core/input-base/input-base.ts","../src/core/input-engine/core/input-base/input-base.types.ts","../src/core/input-engine/variants/check-box-base/prototype/initialize.ts","../src/core/input-engine/core/referencers/referencer.ts","../src/core/input-engine/variants/check-box-base/prototype/ref.ts","../src/core/input-engine/core/dom-registers-builder/prototype/assemble-events-handlers.ts","../src/core/input-engine/core/dom-registers-builder/prototype/build.ts","../src/core/input-engine/core/dom-registers-builder/prototype/build-label.ts","../src/core/input-engine/core/dom-registers-builder/prototype/build-option.ts","../src/core/input-engine/core/dom-registers-builder/prototype/register-aria.ts","../src/core/input-engine/core/input-base/events/on-blur.ts","../src/core/input-engine/core/dom-registers-builder/prototype/register-blur.ts","../src/core/input-engine/core/input-base/events/on-changed-handle.ts","../src/core/input-engine/core/input-base/events/on-changed.ts","../src/core/input-engine/core/dom-registers-builder/prototype/register-change.ts","../src/core/input-engine/variants/click-base/events/on-click.ts","../src/core/input-engine/core/dom-registers-builder/prototype/register-click.ts","../src/core/input-engine/variants/click-base/events/on-click-option.ts","../src/core/input-engine/core/dom-registers-builder/prototype/register-click-option.ts","../src/core/input-engine/core/dom-registers-builder/prototype/register-event.ts","../src/core/input-engine/core/dom-registers-builder/prototype/register-events.ts","../src/core/input-engine/core/input-base/events/on-focus.ts","../src/core/input-engine/core/dom-registers-builder/prototype/register-focus.ts","../src/core/input-engine/core/input-base/events/on-key-press.ts","../src/core/input-engine/core/dom-registers-builder/prototype/register-key-press.ts","../src/core/input-engine/core/input-base/events/on-key-up.ts","../src/core/input-engine/core/dom-registers-builder/prototype/register-key-up.ts","../src/core/input-engine/core/dom-registers-builder/dom-registers-builder.ts","../src/core/input-engine/variants/check-box-base/prototype/register.ts","../src/core/input-engine/variants/check-box-base/check-box-base-input.ts","../src/core/input-engine/variants/check-box-base/check-box-base-input.types.ts","../src/core/input-engine/variants/click-base/prototype/initialize.ts","../src/core/input-engine/variants/click-base/prototype/on-click-handle.ts","../src/core/input-engine/variants/click-base/click-base-input.ts","../src/core/input-engine/variants/click-base/click-base-input.types.ts","../src/core/input-engine/variants/drawer-base/prototype/initialize.ts","../src/core/input-engine/variants/drawer-base/prototype/set-open-state.ts","../src/core/input-engine/variants/drawer-base/drawer-base-input.ts","../src/core/input-engine/variants/drawer-base/drawer-base-input.types.ts","../src/core/input-engine/variants/masked-base/prototype/initialize.ts","../src/core/input-engine/variants/masked-base/core/process-masked-value.ts","../src/core/input-engine/variants/masked-base/prototype/on-change.ts","../src/core/input-engine/variants/masked-base/prototype/on-key-press.ts","../src/core/input-engine/variants/masked-base/prototype/on-key-up.ts","../src/core/input-engine/variants/masked-base/prototype/ref.ts","../src/core/framework/optimization/memoize.ts","../src/core/framework/optimization/compute-aria-attributes.ts","../src/core/input-engine/variants/masked-base/prototype/register.ts","../src/core/input-engine/variants/masked-base/masked-base-input.ts","../src/core/input-engine/variants/masked-base/masked-base-input.types.ts","../src/core/input-engine/variants/numeric-base/prototype/handle-on-changed.ts","../src/core/input-engine/variants/numeric-base/prototype/handle-on-clear.ts","../src/core/input-engine/variants/numeric-base/prototype/initialize.ts","../src/core/input-engine/variants/numeric-base/prototype/ref.ts","../src/core/input-engine/variants/numeric-base/prototype/register.ts","../src/core/input-engine/variants/numeric-base/numeric-base-input.ts","../src/core/input-engine/variants/numeric-base/numeric-base-input.types.ts","../src/core/input-engine/variants/option-based/prototype/check-options-initialized.ts","../src/core/input-engine/variants/option-based/prototype/get-option-by-id.ts","../src/core/input-engine/variants/option-based/prototype/get-option-by-sequence-id.ts","../src/core/input-engine/variants/option-based/prototype/get-option-by-value.ts","../src/core/input-engine/variants/option-based/prototype/get-selected-value.ts","../src/core/input-engine/variants/option-based/prototype/initialize.ts","../src/core/input-engine/variants/option-based/prototype/try-get-option-by-id-or-value.ts","../src/core/input-engine/variants/option-based/prototype/try-get-option-by-sequence-id-then-id-or-value.ts","../src/core/input-engine/variants/option-based/option-base-input.ts","../src/core/input-engine/variants/option-based/option-base-input.types.ts","../src/core/input-engine/variants/radio-base/prototype/handle-on-changed.ts","../src/core/input-engine/variants/radio-base/prototype/initialize.ts","../src/core/input-engine/variants/radio-base/prototype/ref.ts","../src/core/input-engine/variants/radio-base/prototype/ref-option.ts","../src/core/input-engine/variants/radio-base/prototype/register.ts","../src/core/input-engine/variants/radio-base/prototype/register-label.ts","../src/core/input-engine/variants/radio-base/prototype/register-option.ts","../src/core/input-engine/variants/radio-base/radio-base-input.ts","../src/core/input-engine/variants/radio-base/radio-base-input.types.ts","../src/core/input-engine/variants/select-base/prototype/clear.ts","../src/core/input-engine/variants/select-base/prototype/handle-on-changed.ts","../src/core/input-engine/variants/select-base/prototype/handle-on-clear.ts","../src/core/input-engine/core/input-base/events/on-select-handle.ts","../src/core/input-engine/variants/select-base/prototype/handle-on-selected.ts","../src/core/input-engine/variants/select-base/prototype/initialize.ts","../src/core/input-engine/variants/select-base/prototype/on-select-item.ts","../src/core/input-engine/variants/select-base/prototype/ref.ts","../src/core/input-engine/variants/select-base/prototype/register.ts","../src/core/input-engine/variants/select-base/select-base-input.ts","../src/core/input-engine/variants/select-base/select-base-input.types.ts","../src/core/input-engine/variants/text-base/prototype/handle-on-changed.ts","../src/core/input-engine/variants/text-base/prototype/handle-on-clear.ts","../src/core/input-engine/variants/text-base/prototype/initialize.ts","../src/core/input-engine/variants/text-base/prototype/ref.ts","../src/core/input-engine/variants/text-base/prototype/register.ts","../src/core/input-engine/variants/text-base/text-base-input.ts","../src/core/input-engine/variants/text-base/text-base-input.types.ts","../src/core/managers/notification-manager/enums/notification-priority.enum.ts","../src/core/managers/notification-manager/notification-manager.types.ts","../src/core/managers/service-manager/service-manager.types.ts","../src/core/managers/tracking-manager/tracker-manager.types.ts","../src/setup/core/setup-base-input-classes.ts","../src/core/managers/tracking-manager/tracker-manager.default.provider.ts","../src/core/framework/utility/value-is-null-or-undefined.ts","../src/core/managers/validation-manager/strategies/validator-max-length-strategy.ts","../src/core/managers/validation-manager/strategies/validator-max-strategy.ts","../src/core/managers/validation-manager/strategies/validator-min-length-strategy.ts","../src/core/managers/validation-manager/strategies/validator-min-strategy.ts","../src/core/managers/validation-manager/strategies/validator-required-strategy.ts","../src/core/managers/validation-manager/strategies/vaslidator-pattern-strategy.ts","../src/core/framework/common/common.input.types.ts","../src/core/framework/utility/is-boolean.ts","../src/core/managers/value-manager/parsers/boolean-io.ts","../src/core/managers/value-manager/strategies/boolean-parser-strategy.ts","../src/core/framework/common/common.data.types.ts","../src/core/framework/common/common.input.state.types.ts","../src/core/framework/common/missing-prop.enum.ts","../src/core/framework/types/date/date.types.ts","../src/core/framework/types/date/date-picker.utils.ts","../src/core/framework/types/date/getters/get-padded-number.ts","../src/core/framework/types/date/date-object.object.ts","../src/core/framework/converters/object-to-field-converter.ts","../src/core/framework/validators/is-missing.ts","../src/core/framework/converters/to-field-descriptor.ts","../src/core/framework/converters/try-convert-in-date-to-date-object.ts","../src/core/framework/types/date/formatters/format-date.ts","../src/core/framework/types/date/getters/get-correct-month-number.ts","../src/core/framework/types/date/getters/get-day-names.ts","../src/core/framework/types/date/getters/get-day-index.ts","../src/core/framework/types/date/getters/get-day-index-by-name.ts","../src/core/framework/types/date/getters/get-day-name.ts","../src/core/framework/types/date/getters/get-day-name-by-index.ts","../src/core/framework/types/date/getters/get-day-number.ts","../src/core/framework/types/date/getters/get-local-system-separator.ts","../src/core/framework/types/date/getters/get-month-days.ts","../src/core/framework/types/date/getters/get-month-names.ts","../src/core/framework/types/date/getters/get-month-index.ts","../src/core/framework/types/date/getters/get-month-index-by-name.ts","../src/core/framework/types/date/getters/get-month-name.ts","../src/core/framework/types/date/getters/get-month-name-by-index.ts","../src/core/framework/types/date/getters/get-ts.ts","../src/core/framework/types/date/getters/get-year-months.ts","../src/core/framework/types/date/getters/get-years.ts","../src/core/framework/converters/try-convert-string-to-date-object.ts","../src/core/framework/events/default-extends-event-object.ts","../src/core/framework/events/empty-initialize-method.ts","../src/core/framework/events/events.types.ts","../src/core/framework/events/settings/default.settings.ts","../src/core/framework/localize/localize.utils.ts","../src/core/framework/models/errors/api-error.class.ts","../src/core/framework/models/errors/error-index.ts","../src/core/framework/models/errors/field-error.class.ts","../src/core/framework/models/errors/gen-error-ids.ts","../src/core/framework/models/errors/general-error.class.ts","../src/core/framework/models/errors/new-field-error.ts","../src/core/framework/models/errors/new-field-guide.ts","../src/core/framework/optimization/memoize-handlers.ts","../src/core/framework/schema/descriptor/field.descriptor.ts","../src/core/framework/schema/field-schema/prototype/build.ts","../src/core/framework/schema/field-schema/prototype/clone.ts","../src/core/framework/schema/field-schema/prototype/set-default-value.ts","../src/core/framework/schema/field-schema/prototype/set-expected-value.ts","../src/core/framework/schema/field-schema/prototype/set-id.ts","../src/core/framework/schema/field-schema/prototype/set-mask.ts","../src/core/framework/schema/field-schema/prototype/set-name.ts","../src/core/framework/schema/field-schema/prototype/set-option-data.ts","../src/core/framework/schema/field-schema/prototype/set-trigger-key-word.ts","../src/core/framework/schema/field-schema/prototype/set-type-input.ts","../src/core/framework/schema/field-schema/prototype/set-validation-data.ts","../src/core/framework/schema/field-schema/field-schema-builder.ts","../src/core/framework/schema/field-schema-factory/prototype/add-builders.ts","../src/core/framework/schema/field-schema-factory/prototype/create.ts","../src/core/framework/schema/field-schema-factory/field-schema-factory.ts","../src/core/framework/utility/capitalize-first-letter.ts","../src/core/framework/utility/conditional-class.ts","../src/core/framework/utility/if-class.ts","../src/core/framework/utility/is-bigint.ts","../src/core/framework/utility/is-date.ts","../src/core/framework/utility/is-date-object.ts","../src/core/framework/utility/is-function.ts","../src/core/framework/utility/is-n-date.ts","../src/core/framework/utility/is-null-empty-or-undefined.ts","../src/core/framework/utility/is-null-or-empty.ts","../src/core/framework/utility/is-number.ts","../src/core/framework/utility/is-string.ts","../src/core/framework/utility/new-notification-visitor.ts","../src/core/framework/utility/screen-orientation/get-screen-orientation-type-name.ts","../src/core/framework/utility/screen-orientation/screen-orientation.enum.ts","../src/core/framework/utility/screen-orientation/screen-orientation-array.ts","../src/core/framework/utility/shallow-copy.ts","../src/core/framework/utility/string-is-date.ts","../src/core/framework/utility/to-pascal.ts","../src/core/managers/value-manager/parsers/date-io.ts","../src/core/managers/value-manager/strategies/date-parser-strategy.ts","../src/core/managers/value-manager/parsers/options-io.ts","../src/core/managers/value-manager/strategies/numeric-option-parser-strategy.ts","../src/core/managers/value-manager/parsers/numeric-io.ts","../src/core/managers/value-manager/strategies/numeric-parser-strategy.ts","../src/core/managers/value-manager/parsers/select-option-io.ts","../src/core/managers/value-manager/strategies/select-option-parser-strategy.ts","../src/core/managers/value-manager/parsers/string-io.ts","../src/core/managers/value-manager/strategies/string-parser-strategy.ts","../src/setup/services/tracking-strategy-service.ts","../src/setup/services/validation-strategy-service.ts","../src/setup/services/validation-trigger-service.ts","../src/setup/services/value-strategy-service.ts","../src/setup/core/setup-base-input-configurations.ts","../src/core/managers/configuration-manager/prototype/get-config-by-name.ts","../src/core/managers/configuration-manager/default/default-configuration.ts","../src/core/managers/configuration-manager/prototype/get-default-configuration.ts","../src/core/managers/configuration-manager/prototype/load-json.ts","../src/core/managers/configuration-manager/prototype/merge-configuration-with-defaults.ts","../src/core/managers/configuration-manager/prototype/print-configuration.ts","../src/core/managers/configuration-manager/prototype/set-configuration.ts","../src/core/managers/configuration-manager/prototype/use-configuration.ts","../src/core/managers/configuration-manager/prototype/validate-configuration.ts","../src/core/managers/configuration-manager/configuration-manager.ts","../src/core/managers/configuration-manager/default/default-configuration-json.ts","../src/core/managers/configuration-manager/examples.ts","../src/core/managers/dom-manager/prototype/dm-add-arias.ts","../src/core/managers/dom-manager/prototype/dm-aria-set.ts","../src/core/managers/dom-manager/prototype/dm-clear.ts","../src/core/managers/dom-manager/prototype/dm-exists.ts","../src/core/managers/dom-manager/prototype/dm-get.ts","../src/core/managers/dom-manager/prototype/dm-register.ts","../src/core/managers/dom-manager/prototype/dm-register-by-id.ts","../src/core/managers/dom-manager/prototype/dm-set-checked.ts","../src/core/managers/dom-manager/prototype/dm-set-class.ts","../src/core/managers/dom-manager/prototype/dm-set-enabled.ts","../src/core/managers/dom-manager/prototype/dm-set-focus.ts","../src/core/managers/dom-manager/prototype/dm-set-selected.ts","../src/core/managers/dom-manager/prototype/dm-set-value.ts","../src/core/managers/dom-manager/prototype/dm-update-aria.ts","../src/core/managers/dom-manager/prototype/extend.ts","../src/core/managers/dom-manager/prototype/has-extension.ts","../src/core/managers/dom-manager/prototype/initialize.ts","../src/core/managers/dom-manager/dom-manager.ts","../src/core/framework/optimization/latest-calls/global.ts","../src/core/framework/optimization/latest-calls/clear-current-call.ts","../src/core/framework/optimization/latest-calls/remove-call-by-type.ts","../src/core/framework/optimization/latest-calls/take-latest.ts","../src/core/observers/observable-subject/prototype/debounce-trigger.ts","../src/core/observers/observable-subject/prototype/subscribe.ts","../src/core/observers/observable-subject/prototype/trigger.ts","../src/core/observers/observable-subject/prototype/unsubscribe.ts","../src/core/observers/observable-subject/prototype/unsubscribe-all.ts","../src/core/observers/observable-subject/observable-subject.ts","../src/core/managers/notification-manager/utils/key.ts","../src/core/managers/notification-manager/prototype/accept.ts","../src/core/managers/notification-manager/prototype/batch-notify.ts","../src/core/framework/optimization/latest-calls/get-call-by-type.ts","../src/core/managers/notification-manager/prototype/debounce-notify.ts","../src/core/managers/notification-manager/prototype/dismiss.ts","../src/core/managers/notification-manager/prototype/dispose.ts","../src/core/managers/notification-manager/prototype/extend.ts","../src/core/managers/notification-manager/prototype/flush-pending-notifications.ts","../src/core/managers/notification-manager/prototype/get-registered-notifier-names.ts","../src/core/managers/notification-manager/prototype/has-extension.ts","../src/core/managers/notification-manager/prototype/initialize.ts","../src/core/managers/notification-manager/prototype/notify.ts","../src/core/managers/notification-manager/prototype/schedule-batch.ts","../src/core/managers/notification-manager/prototype/set-batch-config.ts","../src/core/managers/notification-manager/prototype/trigger.ts","../src/core/managers/notification-manager/notification-manager.ts","../src/core/managers/style-manager/prototype/class-names.ts","../src/core/managers/style-manager/prototype/extend.ts","../src/core/managers/style-manager/prototype/get.ts","../src/core/managers/style-manager/prototype/get-flags-list.ts","../src/core/managers/style-manager/prototype/get-flags-object.ts","../src/core/managers/style-manager/prototype/has-extension.ts","../src/core/managers/style-manager/prototype/initialize.ts","../src/core/managers/style-manager/utils/set-class-state.ts","../src/core/managers/style-manager/prototype/update.ts","../src/core/managers/style-manager/style-manager.ts","../src/core/managers/tracking-manager/prototype/add-providers.ts","../src/core/managers/tracking-manager/prototype/get-tracking-date.ts","../src/core/managers/tracking-manager/prototype/initialize.ts","../src/core/managers/tracking-manager/prototype/internal-critical.ts","../src/core/managers/tracking-manager/prototype/internal-error.ts","../src/core/managers/tracking-manager/prototype/internal-info.ts","../src/core/managers/tracking-manager/prototype/internal-warning.ts","../src/core/managers/tracking-manager/prototype/print.ts","../src/core/managers/tracking-manager/prototype/print-all.ts","../src/core/managers/tracking-manager/prototype/set-tracking-active.ts","../src/core/managers/tracking-manager/tracker-manager.ts","../src/core/managers/validation-manager/prototype/add-validation-strategies.ts","../src/core/managers/validation-manager/prototype/set-trigger-keyword.ts","../src/core/managers/validation-manager/prototype/add-validation-strategy.ts","../src/core/managers/validation-manager/prototype/initialize.ts","../src/core/managers/validation-manager/prototype/validate.ts","../src/core/managers/validation-manager/prototype/validateAsync.ts","../src/core/managers/validation-manager/prototype/validateMany.ts","../src/core/managers/validation-manager/prototype/validateManyAsync.ts","../src/core/managers/validation-manager/validation-manager.ts","../src/core/managers/value-manager/prototype/accept-value-strategies.ts","../src/core/managers/value-manager/prototype/add-value-strategies.ts","../src/core/managers/value-manager/prototype/clear.ts","../src/core/managers/value-manager/prototype/get-as-string.ts","../src/core/managers/value-manager/prototype/get-value.ts","../src/core/managers/value-manager/prototype/initialize.ts","../src/core/managers/value-manager/prototype/set-value.ts","../src/core/managers/value-manager/prototype/set-value-from-html-element.ts","../src/core/managers/value-manager/value-manager.ts","../src/setup/providers/configuration/input-configuration/input-config-provider.ts","../src/setup/services/field-descriptor-service.ts","../src/setup/core/setup-managers.ts","../src/core/managers/initialization-manager/delegates/initialization-delegate.ts","../src/core/managers/initialization-manager/prototype/add-initializer.ts","../src/core/managers/initialization-manager/prototype/execute-sequences.ts","../src/core/managers/initialization-manager/initialization-manager.ts","../src/core/managers/initialization-manager/sequence-initializer.ts","../src/setup/providers/configuration/base-dependency/dependency.list.settings.ts","../src/core/factories/input-builder-services/base-input-service.ts","../src/core/factories/input-builder-services/check-input-service.ts","../src/core/factories/input-builder-services/radio-input-service.ts","../src/core/factories/input-builder-services/select-input-service.ts","../src/core/factories/input-builder-services/text-input-service.ts","../src/core/factories/input-builder-services/click-input-service.ts","../src/core/factories/input-builder-services/masked-input-service.ts","../src/core/factories/input-builder-services/option-input-service.ts","../src/core/factories/input-factory/input-factory.ts","../src/core/factories/setup/setup-input-factory.ts","../src/core/factories/setup/setup-input-registry.ts","../src/core/managers/formular-manager/prototype/clear.ts","../src/core/enums/loading-status.enum.ts","../src/core/formular-engine/formular-base/prototype/add-fields.ts","../src/core/formular-engine/formular-base/prototype/check-all-fields-are-valid.ts","../src/core/formular-engine/formular-base/prototype/check-changes.ts","../src/core/formular-engine/formular-base/prototype/clear.ts","../src/core/formular-engine/formular-base/prototype/clear-field.ts","../src/core/formular-engine/formular-base/prototype/dispose.ts","../src/core/formular-engine/formular-base/prototype/get-data.ts","../src/core/formular-engine/formular-base/prototype/get-errors.ts","../src/core/formular-engine/formular-base/prototype/get-field.ts","../src/core/formular-engine/formular-base/prototype/get-form-flags.ts","../src/core/formular-engine/formular-base/prototype/has-changes.ts","../src/core/formular-engine/formular-base/prototype/observe.ts","../src/core/formular-engine/formular-base/prototype/parse.ts","../src/core/formular-engine/formular-base/prototype/pre-validate-field.ts","../src/core/formular-engine/formular-base/prototype/reset.ts","../src/core/formular-engine/formular-base/prototype/set-is-busy.ts","../src/core/formular-engine/formular-base/prototype/set-validation-trigger-mode.ts","../src/core/managers/validation-manager/helpers/has-validation-options.ts","../src/core/formular-engine/formular-base/prototype/submit.ts","../src/core/formular-engine/formular-base/prototype/subscribe.ts","../src/core/formular-engine/formular-base/prototype/unobserve-all.ts","../src/core/formular-engine/formular-base/prototype/update-field.ts","../src/core/formular-engine/formular-base/prototype/validate-field.ts","../src/core/formular-engine/formular-base/prototype/validate-form.ts","../src/core/formular-engine/formular-base/formular-base.ts","../src/core/managers/formular-manager/prototype/create-empty.ts","../src/core/managers/formular-manager/prototype/create-from-descriptors.ts","../src/core/managers/formular-manager/prototype/create-from-schema.ts","../src/core/managers/formular-manager/prototype/get-data.ts","../src/core/managers/formular-manager/prototype/get-form.ts","../src/core/managers/formular-manager/prototype/validate.ts","../src/core/managers/formular-manager/formular-manager.ts","../src/core/managers/formular-manager/service/setup-formular-manager.ts","../src/core/managers/service-manager/factory/service-manager-factory.ts","../src/setup/core/setup-helpers.ts","../src/submission-strategy.ts","../src/simple-api.ts","../src/core/managers/dom-manager/dom-manager.mock.ts","../src/core/managers/initialization-manager/initialization-manager-mock-builder.ts","../src/core/managers/service-manager/abstract-service-base/abstract-service-base.ts","../src/core/managers/service-manager/service-locator/service-locator.ts","../src/core/managers/validation-manager/constraint-builder/enums/validation-constraint-type.enum.ts","../src/core/managers/validation-manager/constraint-builder/validation-constraint-factory.ts","../src/core/managers/validation-manager/constraint-builder/validation-constraint-builder.ts","../src/core/managers/validation-manager/generic-validation-builder/generic-validation-builder.ts","../src/core/managers/validation-manager/validation-manager-mock-builder.ts","../src/core/managers/validation-manager/validation-schema/validation.localize.keys.ts","../src/core/managers/validation-manager/validation-schema/presets/max-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/max-length-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/min-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/min-length-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/pattern-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/required-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/max-and-max-length-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/max-and-min-length-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/min-and-max-length-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/min-and-min-length-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/min-length-and-max-length-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/min-max-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/max-min-length-and-max-length-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/min-max-and-max-length-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/min-max-and-min-length-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/min-min-length-and-max-length-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/min-max-min-length-and-max-length-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/min-max-dates-builder.ts","../src/core/managers/validation-manager/validation-schema/presets/min-max-name-builder.ts","../src/core/managers/validation-manager/validation-schema/validation.regex.patterns.ts","../src/core/managers/validation-manager/validation-schema/validators/age-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/credit-card-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/currency-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/date-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/first-name-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/full-name-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/last-name-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/numeric-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/password-medium-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/password-strong-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/phone-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/postal-code-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/ssn-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/time-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/url-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/username-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/country-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/phone-country-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/postal-code-country-validator.ts","../src/core/managers/validation-manager/validation-schema/validators/ssn-country-validator.ts","../src/core/managers/validation-manager/validation-schema/presets/e-mail-builder.ts","../src/core/managers/validation-manager/validation-schema/validators/index.ts","../src/core/managers/validation-manager/validation-schema/presets/builders.enum.ts","../src/core/managers/value-manager/value-manager-mock-builder.ts","../src/core/observers/observable-subject/observable-subject-mock-builder.ts"],"sourcesContent":["import type { ISchemaBase } from '../../types'\nimport type { ISchemaBaseImpl } from '../base.types'\n\nexport function defaultValue<TOutput, TInput>(\n    this: ISchemaBaseImpl<TOutput, TInput>,\n    value: TOutput\n): ISchemaBase<TOutput, TInput> {\n    const cloned = Object.create(Object.getPrototypeOf(this)) as ISchemaBaseImpl<TOutput, TInput>\n    cloned._parse = this._parse\n    cloned._refinements = [...this._refinements]\n    cloned._isOptional = this._isOptional\n    cloned._isNullable = this._isNullable\n    cloned._defaultValue = value\n    cloned._transforms = [...this._transforms]\n\n    // Preserve _debounce property if set\n    if ((this as any)._debounce !== undefined) {\n        ;(cloned as any)._debounce = (this as any)._debounce\n    }\n\n    return cloned\n}\n","import type { ISchemaBase } from '../../types'\nimport type { IRefinement, ISchemaBaseImpl } from '../base.types'\n\nexport function nullable<TOutput, TInput>(\n    this: ISchemaBaseImpl<TOutput, TInput>\n): ISchemaBase<TOutput | null, TInput | null> {\n    const cloned = Object.create(Object.getPrototypeOf(this)) as ISchemaBaseImpl<\n        TOutput | null,\n        TInput | null\n    >\n    // Type widening: the parser can now accept null inputs\n    cloned._parse = this._parse as unknown as (\n        value: TInput | null,\n        path: string[]\n    ) => TOutput | null\n    cloned._refinements = [...this._refinements] as unknown as IRefinement<TOutput | null>[]\n    cloned._isOptional = this._isOptional\n    cloned._isNullable = true\n    cloned._defaultValue = this._defaultValue\n    cloned._transforms = [...this._transforms]\n\n    // Preserve _debounce property if set\n    if ((this as any)._debounce !== undefined) {\n        ;(cloned as any)._debounce = (this as any)._debounce\n    }\n\n    return cloned\n}\n","import type { ISchemaBase } from '../../types'\nimport type { IRefinement, ISchemaBaseImpl } from '../base.types'\n\nexport function optional<TOutput, TInput>(\n    this: ISchemaBaseImpl<TOutput, TInput>\n): ISchemaBase<TOutput | undefined, TInput | undefined> {\n    const cloned = Object.create(Object.getPrototypeOf(this)) as ISchemaBaseImpl<\n        TOutput | undefined,\n        TInput | undefined\n    >\n    // Type widening: the parser can now accept undefined inputs\n    cloned._parse = this._parse as unknown as (\n        value: TInput | undefined,\n        path: string[]\n    ) => TOutput | undefined\n    cloned._refinements = [...this._refinements] as unknown as IRefinement<TOutput | undefined>[]\n    cloned._isOptional = true\n    cloned._isNullable = this._isNullable\n    cloned._defaultValue = this._defaultValue\n    cloned._transforms = [...this._transforms]\n\n    // Preserve _debounce property if set\n    if ((this as any)._debounce !== undefined) {\n        ;(cloned as any)._debounce = (this as any)._debounce\n    }\n\n    return cloned\n}\n","import type { IValidationError } from '../types'\nimport type { ISchemaValidationError } from './error.types'\n\nexport const SchemaValidationError = function (\n    this: ISchemaValidationError,\n    error: IValidationError\n): void {\n    this.name = 'SchemaValidationError'\n    this.message = error.message\n    this.code = error.code\n    this.path = error.path\n    this.errors = [error]\n\n    if (Error.captureStackTrace) {\n        Error.captureStackTrace(this, SchemaValidationError as unknown as () => void)\n    }\n} as unknown as {\n    new (error: IValidationError): ISchemaValidationError\n    prototype: ISchemaValidationError\n}\n\nSchemaValidationError.prototype = Object.create(Error.prototype)\nSchemaValidationError.prototype.constructor = SchemaValidationError\nSchemaValidationError.prototype.name = 'SchemaValidationError'\n","/**\n * Schema constants\n * Error codes and messages for schema validation\n */\n\nexport enum SchemaErrorCode {\n    InvalidType = 'invalid_type',\n    Required = 'required',\n    TooSmall = 'too_small',\n    TooBig = 'too_big',\n    InvalidString = 'invalid_string',\n    InvalidNumber = 'invalid_number',\n    InvalidDate = 'invalid_date',\n    InvalidEnum = 'invalid_enum',\n    InvalidLiteral = 'invalid_literal',\n    InvalidUnion = 'invalid_union',\n    Custom = 'custom'\n}\n\nexport enum StringValidationType {\n    Email = 'email',\n    Url = 'url',\n    Regex = 'regex',\n    Phone = 'phone',\n    PostalCode = 'postal_code',\n    AHV = 'ahv'\n}\n\nexport enum NumberValidationType {\n    Integer = 'integer',\n    Positive = 'positive',\n    Negative = 'negative',\n    MultipleOf = 'multiple_of',\n    Finite = 'finite',\n    Safe = 'safe'\n}\n\n/**\n * Default error messages\n */\nexport const DefaultErrorMessages = {\n    requiredField: 'This field is required',\n    invalidType: (expected: string) => `Expected ${expected}`,\n    tooSmall: (min: number, type: 'string' | 'number' | 'array') =>\n        type === 'string'\n            ? `String must contain at least ${min} character(s)`\n            : type === 'array'\n              ? `Array must contain at least ${min} element(s)`\n              : `Number must be greater than or equal to ${min}`,\n    tooBig: (max: number, type: 'string' | 'number' | 'array') =>\n        type === 'string'\n            ? `String must contain at most ${max} character(s)`\n            : type === 'array'\n              ? `Array must contain at most ${max} element(s)`\n              : `Number must be less than or equal to ${max}`,\n    invalidEmail: 'Invalid email address',\n    invalidUrl: 'Invalid URL',\n    invalidPattern: 'Invalid format',\n    invalidEnum: (values: readonly string[]) => `Value must be one of: ${values.join(', ')}`,\n    invalidLiteral: (value: string | number | boolean) => `Value must be ${value}`,\n    invalidInteger: 'Must be an integer',\n    invalidPositive: 'Must be positive',\n    invalidNegative: 'Must be negative',\n    invalidPhone: 'Invalid phone number',\n    invalidPostalCode: 'Invalid postal code',\n    invalidAHV: 'Invalid AHV number'\n} as const\n","export { SchemaValidationError } from './error'\nexport type { ISchemaValidationError } from './error.types'\n\nimport { SchemaErrorCode } from '../constants'\nimport type { IValidationError } from '../types'\n\n/**\n * Create validation error\n */\nexport function createValidationError(\n    message: string,\n    code: SchemaErrorCode = SchemaErrorCode.Custom,\n    path: string[] = []\n): IValidationError {\n    return {\n        message,\n        code,\n        path\n    }\n}\n\n/**\n * Create type error\n */\nexport function createTypeError(expected: string, path: string[] = []): IValidationError {\n    return createValidationError(`Expected ${expected}`, SchemaErrorCode.InvalidType, path)\n}\n","import { SchemaValidationError } from '../../error'\nimport type { ISchemaBaseImpl } from '../base.types'\n\nexport function parse<TOutput, TInput>(\n    this: ISchemaBaseImpl<TOutput, TInput>,\n    value: TInput\n): TOutput {\n    const result = this.safeParse(value)\n    if (!result.success) {\n        throw new SchemaValidationError(result.error)\n    }\n    return result.data\n}\n","import { SchemaErrorCode } from '../../constants'\nimport type { IRefinementFn, IRefinementOptions, ISchemaBase } from '../../types'\nimport type { ISchemaBaseImpl } from '../base.types'\n\nexport function refine<TOutput, TInput>(\n    this: ISchemaBaseImpl<TOutput, TInput>,\n    check: IRefinementFn<TOutput>,\n    options: IRefinementOptions = {}\n): ISchemaBase<TOutput, TInput> {\n    const cloned = Object.create(Object.getPrototypeOf(this)) as ISchemaBaseImpl<TOutput, TInput>\n    cloned._parse = this._parse\n    cloned._refinements = [\n        ...this._refinements,\n        {\n            check,\n            message: options.message ?? 'Validation failed',\n            code: options.code ?? SchemaErrorCode.Custom\n        }\n    ]\n    cloned._isOptional = this._isOptional\n    cloned._isNullable = this._isNullable\n    cloned._defaultValue = this._defaultValue\n    cloned._transforms = [...this._transforms]\n\n    // Preserve _debounce property if set\n    if ((this as any)._debounce !== undefined) {\n        ;(cloned as any)._debounce = (this as any)._debounce\n    }\n\n    return cloned\n}\n","import { SchemaErrorCode } from '../../constants'\nimport { createValidationError } from '../../error'\nimport type { IParseResult } from '../../types'\nimport type { ISchemaBaseImpl } from '../base.types'\n\nexport function safeParse<TOutput, TInput>(\n    this: ISchemaBaseImpl<TOutput, TInput>,\n    value: TInput\n): IParseResult<TOutput> {\n    try {\n        // Handle undefined with optional\n        if (value === undefined) {\n            if (this._isOptional) {\n                return { success: true, data: undefined as TOutput }\n            }\n            if (this._defaultValue !== undefined) {\n                return { success: true, data: this._defaultValue }\n            }\n            return {\n                success: false,\n                error: createValidationError('Value is required', SchemaErrorCode.Required, [])\n            }\n        }\n\n        // Handle null with nullable\n        if (value === null) {\n            if (this._isNullable) {\n                return { success: true, data: null as TOutput }\n            }\n            return {\n                success: false,\n                error: createValidationError(\n                    'Value cannot be null',\n                    SchemaErrorCode.InvalidType,\n                    []\n                )\n            }\n        }\n\n        // Parse value\n        let parsed = this._parse(value, [])\n\n        // Apply transforms\n        for (const transform of this._transforms) {\n            parsed = transform(parsed) as TOutput\n        }\n\n        // Apply refinements\n        for (const refinement of this._refinements) {\n            if (!refinement.check(parsed)) {\n                return {\n                    success: false,\n                    error: createValidationError(refinement.message, refinement.code, [])\n                }\n            }\n        }\n\n        return { success: true, data: parsed }\n    } catch (err) {\n        if (err && typeof err === 'object' && 'name' in err && err.name === 'SchemaValidationError') {\n            const validationErr = err as any\n            if (validationErr.errors && validationErr.errors.length > 0) {\n                return {\n                    success: false,\n                    error: validationErr.errors[0]\n                }\n            }\n            return {\n                success: false,\n                error: createValidationError(validationErr.message, validationErr.code || SchemaErrorCode.Custom, validationErr.path || [])\n            }\n        }\n        const error = err as Error\n        return {\n            success: false,\n            error: createValidationError(error.message, SchemaErrorCode.Custom, [])\n        }\n    }\n}\n","import type { ISchemaBase, ITransformFn } from '../../types'\nimport type { ISchemaBaseImpl } from '../base.types'\n\nexport function transform<TOutput, TInput, TNewOutput>(\n    this: ISchemaBaseImpl<TOutput, TInput>,\n    fn: ITransformFn<TOutput, TNewOutput>\n): ISchemaBase<TNewOutput, TInput> {\n    const cloned = Object.create(Object.getPrototypeOf(this)) as ISchemaBaseImpl<TNewOutput, TInput>\n    cloned._parse = this._parse as unknown as (value: TInput, path: string[]) => TNewOutput\n    cloned._refinements = []\n    cloned._isOptional = this._isOptional\n    cloned._isNullable = this._isNullable\n    cloned._defaultValue = undefined\n    cloned._transforms = [...this._transforms, fn as ITransformFn<unknown, unknown>]\n\n    // Preserve _debounce property if set\n    if ((this as any)._debounce !== undefined) {\n        ;(cloned as any)._debounce = (this as any)._debounce\n    }\n\n    return cloned\n}\n","/**\n * Base schema constructor\n * Foundation for all schema types\n */\n\nimport type { ISchemaBaseImpl } from './base.types'\nimport { defaultValue, nullable, optional, parse, refine, safeParse, transform } from './prototype'\n\nexport const SchemaBase = function <TOutput, TInput = TOutput>(\n    this: ISchemaBaseImpl<TOutput, TInput>,\n    _parse: (value: TInput, path: string[]) => TOutput\n): void {\n    this._parse = _parse\n    this._refinements = []\n    this._isOptional = false\n    this._isNullable = false\n    this._defaultValue = undefined\n    this._transforms = []\n} as unknown as {\n    new <TOutput, TInput = TOutput>(\n        _parse: (value: TInput, path: string[]) => TOutput\n    ): ISchemaBaseImpl<TOutput, TInput>\n    prototype: any\n}\n\nObject.assign(SchemaBase.prototype, {\n    default: defaultValue,\n    nullable,\n    optional,\n    parse,\n    refine,\n    safeParse,\n    transform\n})\n","export { SchemaBase } from './base'\nexport type { IRefinement, ISchemaBaseImpl } from './base.types'\n\nimport type { IParseFailure, IParseSuccess, IValidationError } from '../types'\n\n/**\n * Helper to create a success result\n */\nexport function success<T>(data: T): IParseSuccess<T> {\n    return { success: true, data }\n}\n\n/**\n * Helper to create a failure result\n */\nexport function failure(error: IValidationError): IParseFailure {\n    return { success: false, error }\n}\n","import { SchemaErrorCode } from '../../constants'\nimport type { IArraySchema } from '../../types'\nimport type { IArraySchemaImpl } from '../array.types'\n\nexport function length<T>(\n    this: IArraySchemaImpl<T>,\n    length: number,\n    message?: string\n): IArraySchema<T> {\n    return this.refine((val) => val.length === length, {\n        message: message ?? `Array must contain exactly ${length} element(s)`,\n        code: SchemaErrorCode.InvalidType\n    }) as IArraySchema<T>\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { IArraySchema } from '../../types'\nimport type { IArraySchemaImpl } from '../array.types'\n\nexport function max<T>(\n    this: IArraySchemaImpl<T>,\n    length: number,\n    message?: string\n): IArraySchema<T> {\n    return this.refine((val) => val.length <= length, {\n        message: message ?? DefaultErrorMessages.tooBig(length, 'array'),\n        code: SchemaErrorCode.TooBig\n    }) as IArraySchema<T>\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { IArraySchema } from '../../types'\nimport type { IArraySchemaImpl } from '../array.types'\n\nexport function min<T>(\n    this: IArraySchemaImpl<T>,\n    length: number,\n    message?: string\n): IArraySchema<T> {\n    return this.refine((val) => val.length >= length, {\n        message: message ?? DefaultErrorMessages.tooSmall(length, 'array'),\n        code: SchemaErrorCode.TooSmall\n    }) as IArraySchema<T>\n}\n","import { SchemaErrorCode } from '../../constants'\nimport type { IArraySchema } from '../../types'\nimport type { IArraySchemaImpl } from '../array.types'\n\nexport function nonempty<T>(this: IArraySchemaImpl<T>, message?: string): IArraySchema<T> {\n    return this.refine((val) => val.length > 0, {\n        message: message ?? 'Array cannot be empty',\n        code: SchemaErrorCode.Required\n    }) as IArraySchema<T>\n}\n","/**\n * Array schema implementation\n */\n\nimport { SchemaBase } from '../base'\nimport { createTypeError } from '../error'\nimport type { IArraySchema, ISchemaBase } from '../types'\nimport { IArraySchemaImpl } from './array.types'\nimport { length } from './prototype/length'\nimport { max } from './prototype/max'\nimport { min } from './prototype/min'\nimport { nonempty } from './prototype/nonempty'\n\nexport const ArraySchema = function <T>(this: IArraySchemaImpl<T>, element: ISchemaBase<T>): void {\n    this.element = element\n    // @ts-expect-error - SchemaBase.call() pattern has unavoidable type conflict with generic constructors\n    SchemaBase.call(this, (value: unknown, path: string[]) => {\n        if (!Array.isArray(value)) {\n            throw new Error(createTypeError('array', path).message)\n        }\n        return value.map((item, index) => {\n            try {\n                return element.parse(item)\n            } catch (err) {\n                const error = err as Error\n                throw new Error(`At index ${index}: ${error.message}`)\n            }\n        })\n    })\n} as unknown as {\n    new <T>(element: ISchemaBase<T>): IArraySchemaImpl<T>\n    prototype: IArraySchema<any>\n}\n\nArraySchema.prototype = Object.create(SchemaBase.prototype)\nArraySchema.prototype.constructor = ArraySchema\n\nObject.assign(ArraySchema.prototype, {\n    min,\n    max,\n    length,\n    nonempty\n})\n","import { SchemaErrorCode } from '../../constants'\nimport type { IBooleanSchema } from '../../types'\nimport type { IBooleanSchemaImpl } from '../boolean.types'\n\nexport function falseMethod(this: IBooleanSchemaImpl, message?: string): IBooleanSchema {\n    return this.refine((val) => val === false, {\n        message: message ?? 'Value must be false',\n        code: SchemaErrorCode.Custom\n    }) as IBooleanSchema\n}\n","import { SchemaErrorCode } from '../../constants'\nimport type { IBooleanSchema } from '../../types'\nimport type { IBooleanSchemaImpl } from '../boolean.types'\n\nexport function trueMethod(this: IBooleanSchemaImpl, message?: string): IBooleanSchema {\n    return this.refine((val) => val === true, {\n        message: message ?? 'Value must be true',\n        code: SchemaErrorCode.Custom\n    }) as IBooleanSchema\n}\n","import { SchemaBase } from '../base'\nimport { createTypeError } from '../error'\nimport type { IBooleanSchema } from '../types'\nimport type { IBooleanSchemaImpl } from './boolean.types'\nimport { falseMethod } from './prototype/false'\nimport { trueMethod } from './prototype/true'\n\nexport const BooleanSchema = function (this: IBooleanSchemaImpl): void {\n    // @ts-expect-error - SchemaBase.call() pattern has unavoidable type conflict with generic constructors\n    SchemaBase.call(this, (value: unknown, path: string[]) => {\n        if (typeof value !== 'boolean') {\n            throw new Error(createTypeError('boolean', path).message)\n        }\n        return value\n    })\n} as unknown as {\n    new (): IBooleanSchemaImpl\n    prototype: IBooleanSchema\n}\n\n// Set up prototype chain to inherit from SchemaBase\nBooleanSchema.prototype = Object.create(SchemaBase.prototype)\nBooleanSchema.prototype.constructor = BooleanSchema\n\n// Add boolean-specific methods\nObject.assign(BooleanSchema.prototype, {\n    true: trueMethod,\n    false: falseMethod\n})\n","import { SchemaErrorCode } from '../../constants'\nimport type { IDateSchema } from '../../types'\nimport type { IDateSchemaImpl } from '../date.types'\n\nexport function max(this: IDateSchemaImpl, date: Date, message?: string): IDateSchema {\n    return this.refine((val) => val.getTime() <= date.getTime(), {\n        message: message ?? `Date must be before ${date.toISOString()}`,\n        code: SchemaErrorCode.TooBig\n    }) as IDateSchema\n}\n","import { SchemaErrorCode } from '../../constants'\nimport type { IDateSchema } from '../../types'\nimport type { IDateSchemaImpl } from '../date.types'\n\nexport function min(this: IDateSchemaImpl, date: Date, message?: string): IDateSchema {\n    return this.refine((val) => val.getTime() >= date.getTime(), {\n        message: message ?? `Date must be after ${date.toISOString()}`,\n        code: SchemaErrorCode.TooSmall\n    }) as IDateSchema\n}\n","import { SchemaBase } from '../base'\nimport { createTypeError } from '../error'\nimport type { IDateSchema } from '../types'\nimport type { IDateSchemaImpl } from './date.types'\nimport { max } from './prototype/max'\nimport { min } from './prototype/min'\n\nexport const DateSchema = function (this: IDateSchemaImpl): void {\n    // @ts-expect-error - SchemaBase.call() pattern has unavoidable type conflict with generic constructors\n    SchemaBase.call(this, (value: unknown, path: string[]) => {\n        if (value instanceof Date) {\n            if (isNaN(value.getTime())) {\n                throw new Error(createTypeError('valid date', path).message)\n            }\n            return value\n        }\n\n        if (typeof value === 'string' || typeof value === 'number') {\n            const date = new Date(value)\n            if (isNaN(date.getTime())) {\n                throw new Error(createTypeError('valid date', path).message)\n            }\n            return date\n        }\n\n        throw new Error(createTypeError('date', path).message)\n    })\n} as unknown as {\n    new (): IDateSchemaImpl\n    prototype: IDateSchema\n}\n\nDateSchema.prototype = Object.create(SchemaBase.prototype)\nDateSchema.prototype.constructor = DateSchema\n\nObject.assign(DateSchema.prototype, {\n    min,\n    max\n})\n","import { SchemaBase } from '../base'\nimport { SchemaErrorCode } from '../constants'\nimport { createValidationError } from '../error'\nimport type { IEnumSchema } from '../types'\nimport type { IEnumSchemaImpl } from './enum.types'\n\nexport const EnumSchema = function <T extends readonly [string, ...string[]]>(\n    this: IEnumSchemaImpl<T>,\n    values: T\n): void {\n    this.values = values\n    // @ts-expect-error - SchemaBase.call() pattern has unavoidable type conflict with generic constructors\n    SchemaBase.call(this, (input: unknown, path: string[]) => {\n        if (typeof input !== 'string' || !values.includes(input)) {\n            throw new Error(\n                createValidationError(\n                    `Expected one of: ${values.join(', ')}`,\n                    SchemaErrorCode.InvalidEnum,\n                    path\n                ).message\n            )\n        }\n        return input as T[number]\n    })\n} as unknown as {\n    new <T extends readonly [string, ...string[]]>(values: T): IEnumSchemaImpl<T>\n    prototype: IEnumSchema<any>\n}\n\nEnumSchema.prototype = Object.create(SchemaBase.prototype)\nEnumSchema.prototype.constructor = EnumSchema\n","import { SchemaBase } from '../base'\nimport { SchemaErrorCode } from '../constants'\nimport { createValidationError } from '../error'\nimport type { ILiteralSchema } from '../types'\nimport type { ILiteralSchemaImpl } from './literal.types'\n\nexport const LiteralSchema = function <T extends string | number | boolean>(\n    this: ILiteralSchemaImpl<T>,\n    value: T\n): void {\n    this.value = value\n    // @ts-expect-error - SchemaBase.call() pattern has unavoidable type conflict with generic constructors\n    SchemaBase.call(this, (input: unknown, path: string[]) => {\n        if (input !== value) {\n            throw new Error(\n                createValidationError(\n                    `Expected literal ${value}`,\n                    SchemaErrorCode.InvalidLiteral,\n                    path\n                ).message\n            )\n        }\n        return value\n    })\n} as unknown as {\n    new <T extends string | number | boolean>(value: T): ILiteralSchemaImpl<T>\n    prototype: ILiteralSchema<any>\n}\n\nLiteralSchema.prototype = Object.create(SchemaBase.prototype)\nLiteralSchema.prototype.constructor = LiteralSchema\n","import type { INumberSchemaImpl } from '../number.types'\n\n/**\n * Set debounce delay for this field\n * Configures per-field debounce timing for UI updates\n *\n * @param milliseconds - Debounce delay in milliseconds\n * @returns The schema instance for method chaining\n *\n * @example\n * ```typescript\n * const schema = f.number().min(0).max(100).debounce(300)\n * // Field will debounce updates at 300ms instead of global default\n * ```\n */\nexport function debounce(this: INumberSchemaImpl, milliseconds: number): INumberSchemaImpl {\n    this._debounce = milliseconds\n    return this\n}\n","import { SchemaErrorCode } from '../../constants'\nimport type { INumberSchema } from '../../types'\nimport type { INumberSchemaImpl } from '../number.types'\n\nexport function finite(this: INumberSchemaImpl, message?: string): INumberSchema {\n    return this.refine((val) => Number.isFinite(val), {\n        message: message ?? 'Number must be finite',\n        code: SchemaErrorCode.InvalidNumber\n    }) as INumberSchema\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { INumberSchema } from '../../types'\nimport type { INumberSchemaImpl } from '../number.types'\n\nexport function int(this: INumberSchemaImpl, message?: string): INumberSchema {\n    return this.refine((val) => Number.isInteger(val), {\n        message: message ?? DefaultErrorMessages.invalidInteger,\n        code: SchemaErrorCode.InvalidNumber\n    }) as INumberSchema\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { INumberSchema } from '../../types'\nimport type { INumberSchemaImpl } from '../number.types'\n\nexport function max(this: INumberSchemaImpl, value: number, message?: string): INumberSchema {\n    return this.refine((val) => val <= value, {\n        message: message ?? DefaultErrorMessages.tooBig(value, 'number'),\n        code: SchemaErrorCode.TooBig\n    }) as INumberSchema\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { INumberSchema } from '../../types'\nimport type { INumberSchemaImpl } from '../number.types'\n\nexport function min(this: INumberSchemaImpl, value: number, message?: string): INumberSchema {\n    return this.refine((val) => val >= value, {\n        message: message ?? DefaultErrorMessages.tooSmall(value, 'number'),\n        code: SchemaErrorCode.TooSmall\n    }) as INumberSchema\n}\n","import { SchemaErrorCode } from '../../constants'\nimport type { INumberSchema } from '../../types'\nimport type { INumberSchemaImpl } from '../number.types'\n\nexport function multipleOf(\n    this: INumberSchemaImpl,\n    value: number,\n    message?: string\n): INumberSchema {\n    return this.refine((val) => val % value === 0, {\n        message: message ?? `Number must be a multiple of ${value}`,\n        code: SchemaErrorCode.InvalidNumber\n    }) as INumberSchema\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { INumberSchema } from '../../types'\nimport type { INumberSchemaImpl } from '../number.types'\n\nexport function negative(this: INumberSchemaImpl, message?: string): INumberSchema {\n    return this.refine((val) => val < 0, {\n        message: message ?? DefaultErrorMessages.invalidNegative,\n        code: SchemaErrorCode.InvalidNumber\n    }) as INumberSchema\n}\n","import { SchemaErrorCode } from '../../constants'\nimport type { INumberSchema } from '../../types'\nimport type { INumberSchemaImpl } from '../number.types'\n\nexport function nonnegative(this: INumberSchemaImpl, message?: string): INumberSchema {\n    return this.refine((val) => val >= 0, {\n        message: message ?? 'Number must be non-negative',\n        code: SchemaErrorCode.InvalidNumber\n    }) as INumberSchema\n}\n","import { SchemaErrorCode } from '../../constants'\nimport type { INumberSchema } from '../../types'\nimport type { INumberSchemaImpl } from '../number.types'\n\nexport function nonpositive(this: INumberSchemaImpl, message?: string): INumberSchema {\n    return this.refine((val) => val <= 0, {\n        message: message ?? 'Number must be non-positive',\n        code: SchemaErrorCode.InvalidNumber\n    }) as INumberSchema\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { INumberSchema } from '../../types'\nimport type { INumberSchemaImpl } from '../number.types'\n\nexport function positive(this: INumberSchemaImpl, message?: string): INumberSchema {\n    return this.refine((val) => val > 0, {\n        message: message ?? DefaultErrorMessages.invalidPositive,\n        code: SchemaErrorCode.InvalidNumber\n    }) as INumberSchema\n}\n","import { SchemaErrorCode } from '../../constants'\nimport type { INumberSchema } from '../../types'\nimport type { INumberSchemaImpl } from '../number.types'\n\nexport function safe(this: INumberSchemaImpl, message?: string): INumberSchema {\n    return this.refine((val) => Number.isSafeInteger(val), {\n        message: message ?? 'Number must be a safe integer',\n        code: SchemaErrorCode.InvalidNumber\n    }) as INumberSchema\n}\n","/**\n * Number schema implementation\n */\n\nimport { SchemaBase } from '../base'\nimport { createTypeError } from '../error'\nimport type { INumberSchema } from '../types'\nimport { INumberSchemaImpl } from './number.types'\nimport { debounce } from './prototype/debounce'\nimport { finite } from './prototype/finite'\nimport { int } from './prototype/int'\nimport { max } from './prototype/max'\nimport { min } from './prototype/min'\nimport { multipleOf } from './prototype/multipleOf'\nimport { negative } from './prototype/negative'\nimport { nonnegative } from './prototype/nonnegative'\nimport { nonpositive } from './prototype/nonpositive'\nimport { positive } from './prototype/positive'\nimport { safe } from './prototype/safe'\n\nexport const NumberSchema = function (this: INumberSchemaImpl): void {\n    // @ts-expect-error - SchemaBase.call() pattern has unavoidable type conflict with generic constructors\n    SchemaBase.call(this, (value: unknown, path: string[]) => {\n        if (typeof value === 'string' && !isNaN(Number(value))) {\n            return Number(value)\n        }\n        if (typeof value !== 'number') {\n            throw new Error(createTypeError('number', path).message)\n        }\n        if (isNaN(value)) {\n            throw new Error('Value is NaN')\n        }\n        return value\n    })\n} as unknown as {\n    new (): INumberSchemaImpl\n    prototype: INumberSchema\n}\n\nNumberSchema.prototype = Object.create(SchemaBase.prototype)\nNumberSchema.prototype.constructor = NumberSchema\n\nObject.assign(NumberSchema.prototype, {\n    min,\n    max,\n    int,\n    positive,\n    negative,\n    nonpositive,\n    nonnegative,\n    multipleOf,\n    finite,\n    safe,\n    debounce\n})\n","import type { IObjectSchema, IObjectShape } from '../../types'\nimport { ObjectSchema } from '../object'\nimport type { IObjectSchemaImpl } from '../object.types'\n\nexport function extend<T extends IObjectShape, U extends IObjectShape>(\n    this: IObjectSchemaImpl<T>,\n    schema: U\n): IObjectSchema<T & U> {\n    const newShape = { ...this.shape, ...schema }\n    return new ObjectSchema(newShape as T & U)\n}\n","import type { IObjectSchema, IObjectShape } from '../../types'\nimport { ObjectSchema } from '../object'\nimport type { IObjectSchemaImpl } from '../object.types'\n\nexport function merge<T extends IObjectShape, U extends IObjectShape>(\n    this: IObjectSchemaImpl<T>,\n    schema: IObjectSchema<U>\n): IObjectSchema<T & U> {\n    const newShape = { ...this.shape, ...(schema as IObjectSchemaImpl<U>).shape }\n    return new ObjectSchema(newShape as T & U)\n}\n","import type { IObjectSchema, IObjectShape, ISchemaBase } from '../../types'\nimport { ObjectSchema } from '../object'\nimport type { IObjectSchemaImpl } from '../object.types'\n\nexport function omit<T extends IObjectShape, K extends keyof T>(\n    this: IObjectSchemaImpl<T>,\n    keys: K[]\n): IObjectSchema<Omit<T, K>> {\n    const newShape: Record<string, ISchemaBase<any>> = {}\n    const omitSet = new Set(keys)\n\n    for (const key in this.shape) {\n        if (\n            Object.prototype.hasOwnProperty.call(this.shape, key) &&\n            !omitSet.has(key as unknown as K)\n        ) {\n            newShape[key] = this.shape[key]\n        }\n    }\n\n    return new ObjectSchema(newShape as Omit<T, K>)\n}\n","import type { IInferShape, IObjectSchema, IObjectShape, ISchemaBase } from '../../types'\nimport { ObjectSchema } from '../object'\nimport type { IObjectSchemaImpl } from '../object.types'\n\nexport function partial<T extends IObjectShape>(\n    this: IObjectSchemaImpl<T>\n): IObjectSchema<{ [K in keyof T]: ISchemaBase<IInferShape<T>[K] | undefined> }> {\n    const newShape: Record<string, ISchemaBase> = {}\n\n    for (const key in this.shape) {\n        if (Object.prototype.hasOwnProperty.call(this.shape, key)) {\n            newShape[key] = this.shape[key].optional()\n        }\n    }\n\n    return new ObjectSchema(\n        newShape as { [K in keyof T]: ISchemaBase<IInferShape<T>[K] | undefined> }\n    )\n}\n","import type { IObjectSchema, IObjectShape, ISchemaBase } from '../../types'\nimport { ObjectSchema } from '../object'\nimport type { IObjectSchemaImpl } from '../object.types'\n\nexport function pick<T extends IObjectShape, K extends keyof T>(\n    this: IObjectSchemaImpl<T>,\n    keys: K[]\n): IObjectSchema<Pick<T, K>> {\n    const newShape: Record<string, ISchemaBase<any>> = {}\n\n    for (const key of keys) {\n        if (Object.prototype.hasOwnProperty.call(this.shape, key)) {\n            newShape[key as string] = this.shape[key]\n        }\n    }\n\n    return new ObjectSchema(newShape as Pick<T, K>)\n}\n","import type { IObjectSchema, IObjectShape } from '../../types'\nimport { ObjectSchema } from '../object'\nimport type { IObjectSchemaImpl } from '../object.types'\n\nexport function required<T extends IObjectShape>(this: IObjectSchemaImpl<T>): IObjectSchema<T> {\n    return new ObjectSchema(this.shape)\n}\n","import { SchemaBase } from '../base'\nimport { createTypeError } from '../error'\nimport { SchemaValidationError } from '../error/error'\nimport type { IObjectSchema, IObjectShape } from '../types'\nimport type { IObjectSchemaImpl } from './object.types'\nimport { extend, merge, omit, partial, pick, required } from './prototype'\n\nexport const ObjectSchema = function <T extends IObjectShape>(\n    this: IObjectSchemaImpl<T>,\n    shape: T\n): void {\n    // @ts-expect-error - SchemaBase.call() pattern has unavoidable type conflict with generic constructors\n    SchemaBase.call(this, (value: unknown, path: string[]) => {\n        if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n            throw new SchemaValidationError(createTypeError('object', path))\n        }\n\n        const objValue = value as Record<string, unknown>\n        const result: Record<string, unknown> = {}\n        const errors: any[] = []\n\n        for (const key in this.shape) {\n            const fieldSchema = this.shape[key]\n            const fieldPath = [...path, key]\n            \n            try {\n                // We MUST call parse() so that all transforms and refinements (e.g. min, max) run\n                result[key] = fieldSchema.parse(objValue[key])\n            } catch (err: any) {\n                if (err.name === 'SchemaValidationError') {\n                    // Inject the correct path into the nested errors\n                    if (err.errors) {\n                        for (const nestedErr of err.errors) {\n                            errors.push({\n                                ...nestedErr,\n                                path: [...fieldPath, ...nestedErr.path]\n                            })\n                        }\n                    } else {\n                        errors.push({\n                            ...err,\n                            path: fieldPath\n                        })\n                    }\n                } else {\n                    errors.push({\n                        message: err.message,\n                        code: 'custom',\n                        path: fieldPath\n                    })\n                }\n            }\n        }\n\n        if (errors.length > 0) {\n            const validationError = new SchemaValidationError(errors[0])\n            validationError.errors = errors\n            throw validationError\n        }\n\n        return result\n    })\n\n    this.shape = shape\n    // @ts-expect-error - SchemaBase.call() pattern has unavoidable type conflict with generic constructors\n    SchemaBase.call(this, (value: unknown, path: string[] = []) => {\n        if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n            throw new Error(`Expected object, received ${value === null ? 'null' : typeof value}`)\n        }\n        \n        const result: Record<string, unknown> = {}\n        const errors: string[] = []\n        \n        for (const key in shape) {\n            const schema = shape[key]\n            const propertyValue = (value as Record<string, unknown>)[key]\n            \n            const parsed = schema.safeParse(propertyValue)\n            if (parsed.success) {\n                if (parsed.data !== undefined) {\n                    result[key] = parsed.data\n                }\n            } else {\n                errors.push(`${key}: ${parsed.error.message}`)\n            }\n        }\n        \n        if (errors.length > 0) {\n            throw new Error(`Object validation failed: ${errors.join('; ')}`)\n        }\n        \n        return result\n    })\n} as unknown as {\n    new <T extends IObjectShape>(shape: T): IObjectSchema<T>\n    prototype: any\n}\n\nObjectSchema.prototype = Object.create(SchemaBase.prototype)\nObjectSchema.prototype.constructor = ObjectSchema\n\nObject.assign(ObjectSchema.prototype, {\n    partial,\n    required,\n    pick,\n    omit,\n    extend,\n    merge\n})\n","import { SchemaBase } from '../base'\nimport { createTypeError } from '../error'\nimport type { IRecordSchema, ISchemaBase } from '../types'\nimport type { IRecordSchemaImpl } from './record.types'\n\nexport const RecordSchema = function <K extends string | number, V>(\n    this: IRecordSchemaImpl<K, V>,\n    keySchema: ISchemaBase<K>,\n    valueSchema: ISchemaBase<V>\n): void {\n    this.keySchema = keySchema\n    this.valueSchema = valueSchema\n    // @ts-expect-error - SchemaBase.call() pattern has unavoidable type conflict with generic constructors\n    SchemaBase.call(this, (value: unknown, path: string[]) => {\n        if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n            throw new Error(createTypeError('record', path).message)\n        }\n\n        const result: Record<K, V> = {} as Record<K, V>\n        const input = value as Record<string, unknown>\n\n        for (const key in input) {\n            if (Object.prototype.hasOwnProperty.call(input, key)) {\n                try {\n                    const parsedKey = keySchema.parse(key as K)\n                    const parsedValue = valueSchema.parse(\n                        input[key] as unknown as Parameters<typeof valueSchema.parse>[0]\n                    )\n                    result[parsedKey] = parsedValue\n                } catch (err) {\n                    const error = err as Error\n                    throw new Error(`At key \"${key}\": ${error.message}`)\n                }\n            }\n        }\n\n        return result\n    })\n} as unknown as {\n    new <K extends string | number, V>(\n        keySchema: ISchemaBase<K>,\n        valueSchema: ISchemaBase<V>\n    ): IRecordSchemaImpl<K, V>\n    prototype: IRecordSchema<any, any>\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { IStringSchema } from '../../types'\nimport { validateAHV } from '../string'\nimport type { IStringSchemaImpl } from '../string.types'\n\nexport function ahv(this: IStringSchemaImpl, message?: string): IStringSchema {\n    return this.refine((val) => validateAHV(val), {\n        message: message ?? DefaultErrorMessages.invalidAHV,\n        code: SchemaErrorCode.InvalidString\n    }) as IStringSchema\n}\n","import type { IStringSchemaImpl } from '../string.types'\n\n/**\n * Set debounce delay for this field\n * Configures per-field debounce timing for UI updates\n *\n * @param milliseconds - Debounce delay in milliseconds\n * @returns The schema instance for method chaining\n *\n * @example\n * ```typescript\n * const schema = f.string().min(3).debounce(200)\n * // Field will debounce updates at 200ms instead of global default\n * ```\n */\nexport function debounce(this: IStringSchemaImpl, milliseconds: number): IStringSchemaImpl {\n    this._debounce = milliseconds\n    return this\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { IStringSchema } from '../../types'\nimport { EMAIL_REGEX } from '../string'\nimport type { IStringSchemaImpl } from '../string.types'\n\nexport function email(this: IStringSchemaImpl, message?: string): IStringSchema {\n    const cloned = this.refine((val) => EMAIL_REGEX.test(val), {\n        message: message ?? DefaultErrorMessages.invalidEmail,\n        code: SchemaErrorCode.InvalidString\n    }) as IStringSchemaImpl\n    cloned._email = { value: EMAIL_REGEX, message: message ?? DefaultErrorMessages.invalidEmail }\n    return cloned as IStringSchema\n}\n","import { SchemaErrorCode } from '../../constants'\nimport type { IStringSchema } from '../../types'\nimport type { IStringSchemaImpl } from '../string.types'\n\nexport function length(this: IStringSchemaImpl, length: number, message?: string): IStringSchema {\n    return this.refine((val) => val.length === length, {\n        message: message ?? `String must be exactly ${length} character(s)`,\n        code: SchemaErrorCode.InvalidString\n    }) as IStringSchema\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { IStringSchema } from '../../types'\nimport type { IStringSchemaImpl } from '../string.types'\n\nexport function max(this: IStringSchemaImpl, length: number, message?: string): IStringSchema {\n    const cloned = this.refine((val) => val.length <= length, {\n        message: message ?? DefaultErrorMessages.tooBig(length, 'string'),\n        code: SchemaErrorCode.TooBig\n    }) as IStringSchemaImpl\n    cloned._max = {\n        value: length,\n        message: message ?? DefaultErrorMessages.tooBig(length, 'string')\n    }\n    return cloned as IStringSchema\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { IStringSchema } from '../../types'\nimport type { IStringSchemaImpl } from '../string.types'\n\nexport function min(this: IStringSchemaImpl, length: number, message?: string): IStringSchema {\n    const cloned = this.refine((val) => val.length >= length, {\n        message: message ?? DefaultErrorMessages.tooSmall(length, 'string'),\n        code: SchemaErrorCode.TooSmall\n    }) as IStringSchemaImpl\n    cloned._min = {\n        value: length,\n        message: message ?? DefaultErrorMessages.tooSmall(length, 'string')\n    }\n    return cloned as IStringSchema\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { IStringSchema } from '../../types'\nimport type { IStringSchemaImpl } from '../string.types'\n\nexport function nonempty(this: IStringSchemaImpl, message?: string): IStringSchema {\n    const cloned = this.refine((val) => val.length > 0, {\n        message: message ?? DefaultErrorMessages.requiredField,\n        code: SchemaErrorCode.Required\n    }) as IStringSchemaImpl\n    cloned._required = { value: true, message: message ?? DefaultErrorMessages.requiredField }\n    return cloned as IStringSchema\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { IStringSchema } from '../../types'\nimport type { IStringSchemaImpl } from '../string.types'\n\nexport function pattern(this: IStringSchemaImpl, regex: RegExp, message?: string): IStringSchema {\n    return this.refine((val) => regex.test(val), {\n        message: message ?? DefaultErrorMessages.invalidPattern,\n        code: SchemaErrorCode.InvalidString\n    }) as IStringSchema\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { IStringSchema } from '../../types'\nimport { PHONE_VALIDATORS } from '../string'\nimport type { IStringSchemaImpl } from '../string.types'\n\nexport function phone(\n    this: IStringSchemaImpl,\n    countryCode: string,\n    message?: string\n): IStringSchema {\n    const validator = PHONE_VALIDATORS[countryCode.toUpperCase()]\n    if (!validator) {\n        throw new Error(`Unsupported country code for phone validation: ${countryCode}`)\n    }\n\n    return this.refine((val) => validator.test(val), {\n        message: message ?? DefaultErrorMessages.invalidPhone,\n        code: SchemaErrorCode.InvalidString\n    }) as IStringSchema\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { IStringSchema } from '../../types'\nimport { POSTAL_CODE_VALIDATORS } from '../string'\nimport type { IStringSchemaImpl } from '../string.types'\n\nexport function postalCode(\n    this: IStringSchemaImpl,\n    countryCode: string,\n    message?: string\n): IStringSchema {\n    const validator = POSTAL_CODE_VALIDATORS[countryCode.toUpperCase()]\n    if (!validator) {\n        throw new Error(`Unsupported country code for postal code validation: ${countryCode}`)\n    }\n\n    return this.refine((val) => validator.test(val), {\n        message: message ?? DefaultErrorMessages.invalidPostalCode,\n        code: SchemaErrorCode.InvalidString\n    }) as IStringSchema\n}\n","import type { IStringSchema } from '../../types'\nimport type { IStringSchemaImpl } from '../string.types'\n\nexport function toLowerCase(this: IStringSchemaImpl): IStringSchema {\n    return this.transform((val) => (val as string).toLowerCase()) as IStringSchema\n}\n","import type { IStringSchema } from '../../types'\nimport type { IStringSchemaImpl } from '../string.types'\n\nexport function toUpperCase(this: IStringSchemaImpl): IStringSchema {\n    return this.transform((val) => (val as string).toUpperCase()) as IStringSchema\n}\n","import type { IStringSchema } from '../../types'\nimport type { IStringSchemaImpl } from '../string.types'\n\nexport function trim(this: IStringSchemaImpl): IStringSchema {\n    return this.transform((val) => (val as string).trim()) as IStringSchema\n}\n","import { DefaultErrorMessages, SchemaErrorCode } from '../../constants'\nimport type { IStringSchema } from '../../types'\nimport { URL_REGEX } from '../string'\nimport type { IStringSchemaImpl } from '../string.types'\n\nexport function url(this: IStringSchemaImpl, message?: string): IStringSchema {\n    return this.refine((val) => URL_REGEX.test(val), {\n        message: message ?? DefaultErrorMessages.invalidUrl,\n        code: SchemaErrorCode.InvalidString\n    }) as IStringSchema\n}\n","/**\n * String schema implementation\n * Comprehensive string validation including country-specific validators\n */\n\nimport { SchemaBase } from '../base'\nimport { createTypeError } from '../error'\nimport type { IStringSchema } from '../types'\nimport { ahv } from './prototype/ahv'\nimport { debounce } from './prototype/debounce'\nimport { email } from './prototype/email'\nimport { length } from './prototype/length'\nimport { max } from './prototype/max'\nimport { min } from './prototype/min'\nimport { nonempty } from './prototype/nonempty'\nimport { pattern } from './prototype/pattern'\nimport { phone } from './prototype/phone'\nimport { postalCode } from './prototype/postalCode'\nimport { toLowerCase } from './prototype/toLowerCase'\nimport { toUpperCase } from './prototype/toUpperCase'\nimport { trim } from './prototype/trim'\nimport { url } from './prototype/url'\nimport { IStringSchemaImpl } from './string.types'\n\n/**\n * Email validation regex\n */\nexport const EMAIL_REGEX = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n\n/**\n * URL validation regex\n */\nexport const URL_REGEX =\n    /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&\\/\\/=]*)$/\n\n/**\n * Phone number validators by country\n */\nexport const PHONE_VALIDATORS: Record<string, RegExp> = {\n    CH: /^(\\+41|0041|0)[1-9]\\d{8}$/,\n    US: /^(\\+1|001|1)?[2-9]\\d{9}$/,\n    UK: /^(\\+44|0044|0)[1-9]\\d{9,10}$/,\n    FR: /^(\\+33|0033|0)[1-9]\\d{8}$/,\n    DE: /^(\\+49|0049|0)[1-9]\\d{9,11}$/,\n    IT: /^(\\+39|0039|0)?[0-9]{9,10}$/,\n    ES: /^(\\+34|0034)?[6-9]\\d{8}$/,\n    CA: /^(\\+1|001|1)?[2-9]\\d{9}$/,\n    AU: /^(\\+61|0061|0)[2-478]\\d{8}$/,\n    JP: /^(\\+81|0081|0)[1-9]\\d{9}$/\n}\n\n/**\n * Postal code validators by country\n */\nexport const POSTAL_CODE_VALIDATORS: Record<string, RegExp> = {\n    CH: /^[1-9]\\d{3}$/,\n    US: /^\\d{5}(-\\d{4})?$/,\n    UK: /^[A-Z]{1,2}\\d[A-Z\\d]? ?\\d[A-Z]{2}$/i,\n    FR: /^\\d{5}$/,\n    DE: /^\\d{5}$/,\n    IT: /^\\d{5}$/,\n    ES: /^\\d{5}$/,\n    CA: /^[A-Z]\\d[A-Z] ?\\d[A-Z]\\d$/i,\n    AU: /^\\d{4}$/,\n    JP: /^\\d{3}-?\\d{4}$/\n}\n\n/**\n * Swiss AHV (social security) validation\n */\nconst AHV_REGEX = /^756\\.\\d{4}\\.\\d{4}\\.\\d{2}$/\n\n/**\n * Validate Swiss AHV number with checksum\n */\nexport function validateAHV(value: string): boolean {\n    if (!AHV_REGEX.test(value)) {\n        return false\n    }\n\n    // Remove dots for checksum calculation\n    const digits = value.replace(/\\./g, '').split('').map(Number)\n\n    // EAN-13 checksum algorithm\n    let sum = 0\n    for (let i = 0; i < digits.length - 1; i++) {\n        sum += digits[i] * (i % 2 === 0 ? 1 : 3)\n    }\n\n    const checksum = (10 - (sum % 10)) % 10\n    return checksum === digits[digits.length - 1]\n}\n\nexport const StringSchema = function (this: IStringSchemaImpl): void {\n    // @ts-expect-error - SchemaBase.call() pattern has unavoidable type conflict with generic constructors\n    SchemaBase.call(this, (value: unknown, path: string[]) => {\n        if (typeof value !== 'string') {\n            throw new Error(createTypeError('string', path).message)\n        }\n        return value\n    })\n} as unknown as {\n    new (): IStringSchemaImpl\n    prototype: IStringSchema\n}\n\nStringSchema.prototype = Object.create(SchemaBase.prototype)\nStringSchema.prototype.constructor = StringSchema\n\nObject.assign(StringSchema.prototype, {\n    email,\n    url,\n    min,\n    max,\n    length,\n    pattern,\n    trim,\n    toLowerCase,\n    toUpperCase,\n    nonempty,\n    phone,\n    postalCode,\n    ahv,\n    debounce\n})\n","import { SchemaBase } from '../base'\nimport type { ISchemaBase, IUnionSchema } from '../types'\nimport type { IUnionSchemaImpl } from './union.types'\n\nexport const UnionSchema = function <T extends readonly ISchemaBase[]>(\n    this: IUnionSchemaImpl<T>,\n    options: T\n): void {\n    this.options = options\n    SchemaBase.call(this, (value: unknown, path: string[]) => {\n        const errors: string[] = []\n\n        for (const schema of options) {\n            const result = schema.safeParse(value)\n            if (result.success) {\n                return result.data as T[number]['_output']\n            }\n            errors.push(result.error.message)\n        }\n\n        throw new Error(`No union variant matched. Errors: ${errors.join('; ')}`)\n    })\n} as unknown as {\n    new <T extends readonly ISchemaBase[]>(options: T): IUnionSchemaImpl<T>\n    prototype: IUnionSchema<any>\n}\n\nUnionSchema.prototype = Object.create(SchemaBase.prototype)\nUnionSchema.prototype.constructor = UnionSchema\n","/**\n * Schema builder API\n * Main entry point for creating schemas\n */\n\nimport { ArraySchema } from './array'\nimport { BooleanSchema } from './boolean'\nimport { DateSchema } from './date'\nimport { EnumSchema } from './enum'\nimport { LiteralSchema } from './literal'\nimport { NumberSchema } from './number'\nimport { ObjectSchema } from './object'\nimport { RecordSchema } from './record'\nimport { StringSchema } from './string'\nimport type {\n    IArraySchema,\n    IBooleanSchema,\n    IDateSchema,\n    IEnumSchema,\n    IInfer,\n    ILiteralSchema,\n    INumberSchema,\n    IObjectSchema,\n    IObjectShape,\n    IRecordSchema,\n    ISchemaBase,\n    IStringSchema,\n    IUnionSchema\n} from './types'\nimport { UnionSchema } from './union'\n\n/**\n * Schema builder namespace\n * Provides factory functions for creating all schema types\n *\n * @example\n * ```typescript\n * import { f } from 'formular.dev'\n *\n * const userSchema = f.object({\n *   email: f.string().email(),\n *   age: f.number().min(18).max(100)\n * })\n *\n * type User = f.infer<typeof userSchema>\n * ```\n */\nexport const f = {\n    /**\n     * Create a string schema\n     */\n    string(): IStringSchema {\n        return new StringSchema()\n    },\n\n    /**\n     * Create a number schema\n     */\n    number(): INumberSchema {\n        return new NumberSchema()\n    },\n\n    /**\n     * Create a boolean schema\n     */\n    boolean(): IBooleanSchema {\n        return new BooleanSchema()\n    },\n\n    /**\n     * Create a date schema\n     */\n    date(): IDateSchema {\n        return new DateSchema()\n    },\n\n    /**\n     * Create a literal schema\n     */\n    literal<T extends string | number | boolean>(value: T): ILiteralSchema<T> {\n        return new LiteralSchema(value)\n    },\n\n    /**\n     * Create an enum schema\n     */\n    enum<T extends readonly [string, ...string[]]>(values: T): IEnumSchema<T> {\n        return new EnumSchema(values)\n    },\n\n    /**\n     * Create an array schema\n     */\n    array<T>(element: ISchemaBase<T>): IArraySchema<T> {\n        return new ArraySchema(element)\n    },\n\n    /**\n     * Create an object schema\n     */\n    object<T extends IObjectShape>(shape: T): IObjectSchema<T> {\n        return new ObjectSchema(shape)\n    },\n\n    /**\n     * Create a union schema\n     */\n    union<T extends readonly ISchemaBase[]>(...options: T): IUnionSchema<T> {\n        return new UnionSchema(options)\n    },\n\n    /**\n     * Create a record schema\n     */\n    record<K extends string | number, V>(\n        keySchema: ISchemaBase<K>,\n        valueSchema: ISchemaBase<V>\n    ): IRecordSchema<K, V> {\n        return new RecordSchema(keySchema, valueSchema)\n    },\n\n    /**\n     * Type inference helper\n     * Extract TypeScript type from schema\n     */\n    infer: <T extends ISchemaBase>(schema: T): IInfer<T> => {\n        return undefined as IInfer<T>\n    }\n}\n\n/**\n * Alias for f.infer\n */\nexport type infer<T extends ISchemaBase> = IInfer<T>\n","/**\n * Validator preset registry\n * Pre-built validation schemas for common form patterns\n */\n\nimport { f } from './builder'\nimport type { IValidatorPreset, IValidatorPresetRegistry } from './types'\n\n/**\n * Preset registry implementation\n */\nexport const ValidatorPresetRegistry = function (this: IValidatorPresetRegistryImpl): void {\n    this._presets = new Map()\n} as unknown as {\n    new (): IValidatorPresetRegistryImpl\n    prototype: IValidatorPresetRegistry\n}\n\ninterface IValidatorPresetRegistryImpl extends IValidatorPresetRegistry {\n    _presets: Map<string, IValidatorPreset>\n}\n\nValidatorPresetRegistry.prototype.register = function (\n    this: IValidatorPresetRegistryImpl,\n    preset: IValidatorPreset\n): void {\n    this._presets.set(preset.name, preset)\n}\n\nValidatorPresetRegistry.prototype.get = function (\n    this: IValidatorPresetRegistryImpl,\n    name: string\n): IValidatorPreset | undefined {\n    return this._presets.get(name)\n}\n\nValidatorPresetRegistry.prototype.list = function (\n    this: IValidatorPresetRegistryImpl\n): IValidatorPreset[] {\n    return Array.from(this._presets.values())\n}\n\nValidatorPresetRegistry.prototype.has = function (\n    this: IValidatorPresetRegistryImpl,\n    name: string\n): boolean {\n    return this._presets.has(name)\n}\n\n/**\n * Global preset registry instance\n */\nexport const presetRegistry = new ValidatorPresetRegistry()\n\n/**\n * Built-in presets\n */\n\n// Login form preset\npresetRegistry.register({\n    name: 'login',\n    description: 'Standard login form with email and password',\n    schema: f.object({\n        email: f.string().email().nonempty(),\n        password: f.string().min(8).nonempty(),\n        rememberMe: f.boolean().optional()\n    }),\n    fields: {}\n})\n\n// Signup form preset\npresetRegistry.register({\n    name: 'signup',\n    description: 'User registration form',\n    schema: f.object({\n        name: f.string().min(2).max(100).nonempty(),\n        email: f.string().email().nonempty(),\n        password: f.string().min(8).max(128).nonempty(),\n        confirmPassword: f.string().nonempty(),\n        acceptTerms: f.boolean().refine((val) => val === true, { message: 'You must accept terms' })\n    }),\n    fields: {}\n})\n\n// Contact form preset\npresetRegistry.register({\n    name: 'contact',\n    description: 'Contact form with name, email, and message',\n    schema: f.object({\n        name: f.string().min(2).max(100).nonempty(),\n        email: f.string().email().nonempty(),\n        subject: f.string().min(3).max(200).optional(),\n        message: f.string().min(10).max(2000).nonempty()\n    }),\n    fields: {}\n})\n\n// Profile form preset\npresetRegistry.register({\n    name: 'profile',\n    description: 'User profile form',\n    schema: f.object({\n        firstName: f.string().min(2).max(50).nonempty(),\n        lastName: f.string().min(2).max(50).nonempty(),\n        email: f.string().email().nonempty(),\n        phone: f.string().optional(),\n        bio: f.string().max(500).optional(),\n        avatar: f.string().url().optional()\n    }),\n    fields: {}\n})\n\n// Address form preset\npresetRegistry.register({\n    name: 'address',\n    description: 'Address form with international support',\n    schema: f.object({\n        street: f.string().min(3).max(200).nonempty(),\n        city: f.string().min(2).max(100).nonempty(),\n        postalCode: f.string().nonempty(),\n        country: f.enum(['US', 'UK', 'FR', 'DE', 'CH', 'IT', 'ES', 'CA', 'AU', 'JP'])\n    }),\n    fields: {}\n})\n\n// Payment form preset\npresetRegistry.register({\n    name: 'payment',\n    description: 'Payment information form',\n    schema: f.object({\n        cardNumber: f\n            .string()\n            .pattern(/^\\d{16}$/, 'Invalid card number')\n            .nonempty(),\n        cardHolder: f.string().min(3).max(100).nonempty(),\n        expiryMonth: f.number().int().min(1).max(12),\n        expiryYear: f.number().int().min(new Date().getFullYear()),\n        cvv: f\n            .string()\n            .pattern(/^\\d{3,4}$/, 'Invalid CVV')\n            .nonempty()\n    }),\n    fields: {}\n})\n\n// Swiss specific form preset\npresetRegistry.register({\n    name: 'swiss-user',\n    description: 'Swiss user form with AHV and phone validation',\n    schema: f.object({\n        firstName: f.string().min(2).max(50).nonempty(),\n        lastName: f.string().min(2).max(50).nonempty(),\n        email: f.string().email().nonempty(),\n        phone: f.string().phone('CH'),\n        postalCode: f.string().postalCode('CH'),\n        ahv: f.string().ahv()\n    }),\n    fields: {}\n})\n\n// Newsletter subscription preset\npresetRegistry.register({\n    name: 'newsletter',\n    description: 'Newsletter subscription form',\n    schema: f.object({\n        email: f.string().email().nonempty(),\n        preferences: f.array(f.enum(['weekly', 'monthly', 'announcements'])).optional()\n    }),\n    fields: {}\n})\n\n// Search form preset\npresetRegistry.register({\n    name: 'search',\n    description: 'Search form with filters',\n    schema: f.object({\n        query: f.string().min(2).max(200).nonempty(),\n        category: f.string().optional(),\n        sortBy: f.enum(['relevance', 'date', 'popular']).optional(),\n        dateFrom: f.date().optional(),\n        dateTo: f.date().optional()\n    }),\n    fields: {}\n})\n","import { IFormular } from '@core/formular-engine/formular-base/formular-base.types'\n\nimport { IEntityScheme } from '@core/framework/schema/field-schema/field-schema-types'\n\nimport { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\nimport { INotificationManager } from '@core/managers/notification-manager/notification-manager-base.types'\nimport { IServiceManager } from '../service-manager/service-manager.types'\n\nexport const SFormularManager = Symbol.for('IFormularManager')\n\n/**\n * Central form management service that handles the creation and lifecycle of forms.\n *\n * The FormularManager is responsible for:\n * - Creating forms from various sources (schemas, descriptors, empty forms)\n * - Managing form instances and their lifecycle\n * - Providing access to form data and validation states\n * - Coordinating with the service container for dependency injection\n *\n * This is the primary entry point for form operations in the FORMULAR system.\n *\n * @example\n * ```typescript\n * // Create manager with dependencies\n * const formManager = new FormularManager(serviceManager);\n *\n * // Create form from schema\n * const userForm = formManager.createFromSchema<UserData>(userSchema);\n *\n * // Create form from field descriptors\n * const contactForm = formManager.createFromDescriptors<ContactData>('contact', fieldDescriptors);\n *\n * // Get form data\n * const userData = formManager.getData<UserData>('userForm');\n *\n * // Validate specific form\n * const isValid = await formManager.validate('userForm');\n * ```\n */\nexport interface IFormularManager {\n    /**\n     * Constructor for creating a new FormularManager instance\n     * @param serviceManager - The IoC container for dependency resolution\n     */\n    new (serviceManager: IServiceManager): IFormularManager\n\n    /** Reference to the service manager for dependency injection */\n    sm: IServiceManager\n\n    /** Map of all managed form instances, keyed by form ID */\n    forms: Map<string, IFormular<any>>\n\n    /** Optional notification manager for form-level notifications */\n    readonly notificationManager?: INotificationManager\n\n    /**\n     * Removes a specific form from management\n     * @param formId - The form instance to remove\n     */\n    clear: <T extends object>(formId: IFormular<T>) => void\n\n    /**\n     * Removes all forms from management and cleans up resources\n     */\n    clearAll: () => void\n\n    /**\n     * Retrieves a form instance by its ID\n     * @param formId - Unique identifier of the form to retrieve\n     * @returns The form instance or undefined if not found\n     */\n    getForm: (formId: string) => IFormular<any> | undefined\n\n    /**\n     * Extracts the current data from a specific form\n     * @param formId - ID of the form to get data from\n     * @returns The form's current data as a typed object\n     */\n    getData: <T extends object>(formId: string) => T | undefined\n\n    /**\n     * Validates a specific form and returns overall validity\n     * @param formId - ID of the form to validate\n     * @returns Promise resolving to true if form is valid\n     */\n    validate: (formId: string) => Promise<boolean>\n\n    /**\n     * Creates a new form from an array of field descriptors\n     *\n     * @param id - Unique identifier for the new form\n     * @param descriptor - Array of field descriptors defining the form structure\n     * @returns The created form instance or undefined if creation failed\n     *\n     * @example\n     * ```typescript\n     * const fieldDescriptors: IFieldDescriptor[] = [\n     *   { id: 1, name: 'username', type: 'text', ... },\n     *   { id: 2, name: 'email', type: 'email', ... }\n     * ];\n     * const form = manager.createFromDescriptors<UserData>('user-form', fieldDescriptors);\n     * ```\n     */\n    createFromDescriptors: <T extends object>(\n        id: string,\n        descriptor: IFieldDescriptor[]\n    ) => IFormular<T> | undefined\n\n    /**\n     * Creates a new form from a field schema definition\n     *\n     * @param schema - Entity schema containing field definitions and validation rules\n     * @returns The created form instance or undefined if creation failed\n     *\n     * @example\n     * ```typescript\n     * const userSchema: IEntityScheme = {\n     *   name: 'user-form',\n     *   properties: [\n     *     new FieldSchemaBuilder().setName('username').setTypeInput('text').build(),\n     *     new FieldSchemaBuilder().setName('email').setTypeInput('email').build()\n     *   ]\n     * };\n     * const form = manager.createFromSchema<UserData>(userSchema);\n     * ```\n     */\n    createFromSchema: <T extends object>(schema: IEntityScheme) => IFormular<T> | undefined\n\n    /**\n     * Creates an empty form with no predefined fields\n     *\n     * Useful for dynamic forms where fields are added programmatically\n     * based on runtime conditions or user interactions.\n     *\n     * @param name - Unique name for the empty form\n     * @returns The created empty form instance\n     *\n     * @example\n     * ```typescript\n     * const dynamicForm = manager.createEmpty<DynamicData>('dynamic-form');\n     * // Add fields dynamically later\n     * dynamicForm.addFields(...dynamicFields);\n     * ```\n     */\n    createEmpty: <T extends object>(name: string) => IFormular<T> | undefined\n}\n","import { ServiceManager } from '../service-manager'\nimport { IServiceManager } from '../service-manager.types'\n\nexport const createScope = function (this: IServiceManager): any {\n    this.throwIfDisposed()\n    return new ServiceManager(this)\n}\n","import { ITrackingManager, TrackingType } from '../tracking-manager/tracker-manager.types'\n\nexport const logManager = function (\n    tracker: ITrackingManager | undefined,\n    type: TrackingType,\n    source: string,\n    message: string\n) {\n    try {\n        if (!tracker) {\n            _messageConsoleFactory(type, source, message)\n            return\n        }\n        _messageTrackerFactory(tracker, type, source, message)\n    } catch (e: any) {\n        console.error(`${logManager.name}: unexpected error. ${e?.message}`)\n    }\n}\n\nconst _messageConsoleFactory = (type: TrackingType, source: string, message: string) => {\n    switch (type) {\n        case 'critical':\n            // For critical, log and throw to interrupt execution as intended\n            console.error(`CRITICAL - ${source}: ${message}`)\n            throw Error(`${source}: ${message}`)\n        case 'warning':\n            console.warn(`${source}: ${message}`)\n            break\n        case 'error':\n            console.error(`${source}: ${message}`)\n            break\n        case 'info':\n            console.info(`${source}: ${message}`)\n            break\n        default:\n            assertNever(type)\n    }\n}\n\nfunction assertNever(x: never): never {\n    throw new Error(`Unhandled TrackingType: ${x}`)\n}\n\nconst _messageTrackerFactory = (\n    tracker: ITrackingManager,\n    type: TrackingType,\n    source: string,\n    message: string\n) => {\n    switch (type) {\n        case 'critical':\n            tracker.internalCritical(source, message)\n            break\n        case 'error':\n            tracker.internalError(source, message)\n            break\n        case 'warning':\n            tracker.internalWarning(source, message)\n            break\n        case 'info':\n            tracker.internalInfo(source, message)\n            break\n        default:\n            assertNever(type)\n    }\n}\n","import { logManager } from '@core/managers/log-manager/log-manager'\nimport { IServiceManager } from '../service-manager.types'\n\nexport const dispose = function (this: IServiceManager): any {\n    if (this.isDisposed) {\n        return\n    }\n\n    for (const [identifier, instance] of this.singletonInstances) {\n        if (instance && typeof instance.dispose === 'function') {\n            try {\n                instance.dispose()\n                logManager(\n                    undefined,\n                    'info',\n                    'IServiceManager',\n                    `Disposed service: ${this.getServiceName(identifier)}`\n                )\n            } catch (e: any) {\n                logManager(\n                    undefined,\n                    'error',\n                    'IServiceManager',\n                    `Error disposing service: ${this.getServiceName(identifier)} - ${e.message}`\n                )\n            }\n        }\n    }\n\n    for (const [identifier, instance] of this.scopedInstances) {\n        if (instance && typeof instance.dispose === 'function') {\n            try {\n                instance.dispose()\n                logManager(\n                    undefined,\n                    'info',\n                    'IServiceManager',\n                    `Disposed service: ${this.getServiceName(identifier)}`\n                )\n            } catch (e: any) {\n                logManager(\n                    undefined,\n                    'error',\n                    'IServiceManager',\n                    `Error disposing service: ${this.getServiceName(identifier)} - ${e.message}`\n                )\n            }\n        }\n    }\n    this.services.clear()\n    this.singletonInstances.clear()\n    this.scopedInstances.clear()\n    this.isDisposed = true\n}\n","import { IServiceManager, ServiceIdType } from '../service-manager.types'\n\nexport const findServiceDescriptor = function (this: IServiceManager, identifier: ServiceIdType) {\n    if (this.services.has(identifier)) {\n        return this.services.get(identifier)\n    }\n    /** Chain of responsibility pattern */\n    return this.parent?.findServiceDescriptor(identifier)\n}\n","import { IServiceManager, ServiceIdType } from '../service-manager.types'\n\nexport const getServiceName = function (this: IServiceManager, identifier: ServiceIdType): string {\n    this.throwIfDisposed()\n\n    if (typeof identifier === 'string') {\n        return identifier\n    }\n    if (typeof identifier === 'symbol') {\n        return identifier.toString()\n    }\n    if (typeof identifier === 'function') {\n        return identifier.name ?? 'AnonymousClass'\n    }\n    throw new Error('IServiceManager: Invalid service identifier type')\n}\n","import { IServiceManager, ServiceIdType } from '../service-manager.types'\n\nexport const isRegistered = function <T>(\n    this: IServiceManager,\n    identifier: ServiceIdType<T>\n): boolean {\n    return this.findServiceDescriptor(identifier) !== undefined\n}\n","import { IServiceManager, ServiceIdType } from '../service-manager.types'\n\nexport const lazy = function <T>(\n    this: IServiceManager,\n    identifier: ServiceIdType<T>,\n    ...parameters: any[]\n): () => T {\n    this.throwIfDisposed()\n\n    let resolved = false\n    let service: T\n\n    return () => {\n        if (!resolved) {\n            service = this.resolve<T>(identifier, ...parameters)\n            resolved = true\n        }\n        return service\n    }\n}\n","import {\n    IServiceDescriptor,\n    IServiceManager,\n    IServiceOptions,\n    ServiceFactoryType,\n    ServiceIdType\n} from '../service-manager.types'\n\nexport const register = function <T>(\n    this: IServiceManager,\n    identifier: ServiceIdType<T>,\n    factory: ServiceFactoryType<T>,\n    options?: IServiceOptions\n): any {\n    this.throwIfDisposed()\n\n    const descriptor: IServiceDescriptor<T> = {\n        identifier,\n        factory,\n        lifetime: options?.lifetime ?? 'transient',\n        dependencies: options?.dependencies ?? []\n    }\n\n    this.services.set(identifier, descriptor)\n\n    // Disable verbose service registration logs\n    // logManager(\n    //     undefined,\n    //     'info',\n    //     'IServiceManager',\n    //     `Registered service: ${this.getServiceName(identifier)} as ${descriptor.lifetime}`\n    // )\n\n    return this\n}\n","import { IServiceManager, ServiceIdType } from '../../service-manager.types'\n\nexport interface ILazyDependencyProxy<T> {\n    new (\n        identifier: ServiceIdType<T>,\n        container: IServiceManager,\n        dependency: ServiceIdType<any>\n    ): any\n    container: IServiceManager\n    resolvedDependency: any\n    isResolved: boolean\n    dependency: ServiceIdType<any>\n    proxy: () => ProxyHandler<any>\n    identifier: ServiceIdType<T>\n    get: (target: any, prop: PropertyKey, receiver: any) => any\n    set: (target: any, prop: PropertyKey, value: any) => boolean\n    has: (target: any, prop: PropertyKey) => boolean\n    ownKeys: (target: any) => ArrayLike<string | symbol>\n    getOwnPropertyDescriptor: (target: any, prop: PropertyKey) => PropertyDescriptor | undefined\n}\n\nexport const LazyDependencyProxy = function <T>(\n    this: ILazyDependencyProxy<T>,\n    identifier: ServiceIdType<T>,\n    container: IServiceManager,\n    dependency: ServiceIdType<any>\n) {\n    this.resolvedDependency = null\n    this.isResolved = false\n    this.identifier = identifier\n    this.dependency = dependency\n    this.container = container\n\n    this.proxy = () =>\n        new Proxy(this, {\n            get: this.get,\n            set: this.set,\n            has: this.has,\n            ownKeys: this.ownKeys,\n            getOwnPropertyDescriptor: this.getOwnPropertyDescriptor\n        }) as ProxyHandler<any>\n\n    this.get = (target, prop, receiver) => {\n        if (!this.isResolved) {\n            try {\n                this.resolvedDependency = container.resolve(this.dependency)\n                this.isResolved = true\n            } catch (e: any) {\n                throw new Error(\n                    `IServiceManager: Failed to resolve dependency ${container.getServiceName(dependency)} \n                    for service ${container.getServiceName(this.identifier)} - ${e.message}`\n                )\n            }\n        }\n        const value = this.resolvedDependency[prop]\n        return typeof value === 'function' ? value.bind(this.resolvedDependency) : value\n    }\n\n    this.set = (target, prop, value) => {\n        if (!this.isResolved) {\n            try {\n                this.resolvedDependency = container.resolve(dependency)\n                this.isResolved = true\n            } catch (e: any) {\n                throw new Error(\n                    `IServiceManager: Failed to resolve dependency ${container.getServiceName(dependency)} \n                    for service ${container.getServiceName(this.identifier)} - ${e.message}`\n                )\n            }\n        }\n        this.resolvedDependency[prop] = value\n        return true\n    }\n\n    this.has = (target, prop) => {\n        if (!this.isResolved) {\n            try {\n                this.resolvedDependency = container.resolve(dependency)\n                this.isResolved = true\n            } catch (e: any) {\n                throw new Error(\n                    `IServiceManager: Failed to resolve dependency ${container.getServiceName(dependency)} \n                    for service ${container.getServiceName(this.identifier)} - ${e.message}`\n                )\n            }\n        }\n        return prop in this.resolvedDependency\n    }\n\n    this.ownKeys = (target) => {\n        if (!this.isResolved) {\n            try {\n                this.resolvedDependency = container.resolve(dependency)\n                this.isResolved = true\n            } catch (e: any) {\n                throw new Error(\n                    `IServiceManager: Failed to resolve dependency ${container.getServiceName(dependency)}                     \n                    for service ${container.getServiceName(this.identifier)} - ${e.message}`\n                )\n            }\n        }\n        return Reflect.ownKeys(this.resolvedDependency)\n    }\n\n    this.getOwnPropertyDescriptor = (target, prop) => {\n        if (!this.isResolved) {\n            try {\n                this.resolvedDependency = container.resolve(dependency)\n                this.isResolved = true\n            } catch (e: any) {\n                throw new Error(\n                    `IServiceManager: Failed to resolve dependency ${container.getServiceName(dependency)} \n                    for service ${container.getServiceName(this.identifier)} - ${e.message}`\n                )\n            }\n        }\n        return Reflect.getOwnPropertyDescriptor(this.resolvedDependency, prop)\n    }\n} as any as ILazyDependencyProxy<any>\n","import {\n    IServiceManager,\n    IServiceOptions,\n    ServiceFactoryType,\n    ServiceIdType\n} from '../service-manager.types'\nimport { ILazyDependencyProxy, LazyDependencyProxy } from './register-proxy/getter'\n\nexport const registerClass = function <T>(\n    this: IServiceManager,\n    identifier: ServiceIdType<T>,\n    constructor: new (...args: any[]) => T,\n    options: IServiceOptions = {}\n): any {\n    this.throwIfDisposed()\n\n    const factory: ServiceFactoryType<T> = (container: IServiceManager, ...parameters: any[]) => {\n        const dependencies = options.dependencies ?? []\n        const lazyDependencies = dependencies.map((dependency: ServiceIdType<any>) => {\n            if (dependency === null || dependency === undefined) return null\n\n            const lazyDependency: ILazyDependencyProxy<T> = new LazyDependencyProxy(\n                identifier,\n                container,\n                dependency\n            )\n\n            try {\n                return lazyDependency.proxy()\n            } catch (e: any) {\n                throw new Error(\n                    `IServiceManager: Failed to resolve dependency ${container.getServiceName(dependency)} for service ${container.getServiceName(identifier)} - ${e.message}`\n                )\n            }\n        })\n        // Runtime parameters are passed directly, not resolved from container\n        return new constructor(...lazyDependencies, ...parameters)\n    }\n    this.register<T>(identifier, factory, options)\n}\n","import { logManager } from '@core/managers/log-manager/log-manager'\nimport { IServiceManager, ServiceIdType } from '../service-manager.types'\n\nexport const registerInstance = function <T>(\n    this: IServiceManager,\n    identifier: ServiceIdType<T>,\n    instance: T\n): any {\n    this.throwIfDisposed()\n\n    this.singletonInstances.set(identifier, instance)\n\n    this.services.set(identifier, {\n        identifier,\n        factory: () => instance as T,\n        lifetime: 'singleton'\n    })\n\n    logManager(\n        undefined,\n        'info',\n        'IServiceManager',\n        `Registered instance: ${this.getServiceName(identifier)}`\n    )\n\n    return this\n}\n","import { IServiceManager, ServiceIdType } from '../service-manager.types'\n\nexport const resolve = function <T>(\n    this: IServiceManager,\n    identifier: ServiceIdType<T>,\n    ...parameters: any[]\n): T {\n    this.throwIfDisposed()\n\n    const instance = this.tryResolve<T>(identifier, ...parameters)\n    if (instance === undefined) {\n        throw new Error(\n            `IServiceManager - resolve: Service not found: ${this.getServiceName(\n                identifier\n            )} parameters: ${JSON.stringify(parameters)}`\n        )\n    }\n\n    return instance\n}\n","import { IServiceManager } from '../service-manager.types'\n\nexport const throwIfDisposed = function (this: IServiceManager): void {\n    if (this.isDisposed) {\n        throw new Error('IServiceManager: Cannot use disposed service manager')\n    }\n}\n","import { logManager } from '@core/managers/log-manager/log-manager'\nimport { IServiceManager, ServiceIdType } from '../service-manager.types'\n\nexport const tryResolve = function <T>(\n    this: IServiceManager,\n    identifier: ServiceIdType<T>,\n    ...parameters: any[]\n): T | undefined {\n    this.throwIfDisposed()\n\n    // Check for circular dependency\n    if (this.resolutionStack.has(identifier)) {\n        const stack = Array.from(this.resolutionStack)\n            .map((id) => this.getServiceName(id))\n            .join(' -> ')\n        throw new Error(\n            `Circular dependency detected: ${stack} -> ${this.getServiceName(identifier)}`\n        )\n    }\n\n    // Add to resolution stack\n    this.resolutionStack.add(identifier)\n\n    try {\n        if (this.singletonInstances.has(identifier)) {\n            return this.singletonInstances.get(identifier) as T\n        }\n\n        if (this.scopedInstances.has(identifier)) {\n            return this.scopedInstances.get(identifier) as T\n        }\n\n        const descriptor = this.findServiceDescriptor(identifier)\n        if (!descriptor) {\n            return undefined\n        }\n\n        // For singletons, reserve the spot to prevent circular issues\n        if (descriptor.lifetime === 'singleton') {\n            this.singletonInstances.set(identifier, Symbol('resolving'))\n        }\n\n        const instance = descriptor.factory(this, ...parameters)\n\n        switch (descriptor.lifetime) {\n            case 'singleton':\n                this.singletonInstances.set(identifier, instance)\n                return instance as T\n            case 'scoped':\n                this.scopedInstances.set(identifier, instance)\n                return instance as T\n            case 'transient':\n                // should not have cached instance !\n                break\n            default:\n                throw new Error(\n                    `IServiceManager - tryResolve: Invalid lifetime ${descriptor.lifetime}`\n                )\n        }\n\n        // Disable verbose resolution logs\n        // logManager(\n        //     undefined,\n        //     'info',\n        //     'IServiceManager',\n        //     `IServiceManager: Resolved service: ${this.getServiceName(identifier)} (${\n        //         descriptor.lifetime\n        //     })`\n        // )\n\n        return instance\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            'IServiceManager',\n            `Failed to resolve service: ${this.getServiceName(identifier)} - ${e.message}`\n        )\n\n        // Re-throw the error for proper error handling\n        throw e\n    } finally {\n        // Remove from resolution stack\n        this.resolutionStack.delete(identifier)\n    }\n}\n","import { IServiceManager, ServiceIdType } from '../service-manager.types'\n\nexport const validateNoCycles = function (this: IServiceManager): void {\n    const visited = new Set<ServiceIdType>()\n    const visiting = new Set<ServiceIdType>()\n\n    const visit = (identifier: ServiceIdType, path: ServiceIdType[] = []): void => {\n        if (visiting.has(identifier)) {\n            const cycle = [...path, identifier].map((id) => this.getServiceName(id)).join(' -> ')\n            throw new Error(`Circular dependency detected: ${cycle}`)\n        }\n\n        if (visited.has(identifier)) return\n\n        visiting.add(identifier)\n        const descriptor = this.findServiceDescriptor(identifier)\n\n        if (descriptor && 'dependencies' in descriptor && descriptor.dependencies) {\n            for (const dependency of descriptor.dependencies) {\n                if (dependency !== null) {\n                    visit(dependency, [...path, identifier])\n                }\n            }\n        }\n\n        visiting.delete(identifier)\n        visited.add(identifier)\n    }\n\n    for (const [identifier] of this.services) {\n        if (!visited.has(identifier)) {\n            visit(identifier)\n        }\n    }\n}\n","/**\n * FORMULAR - Service Manager (IoC Container)\n * Copyright (c) 2025 Piana Tadeo\n * Licensed under MIT License\n *\n * Advanced dependency injection system with lazy resolution and lifecycle management\n */\n\nimport { createScope } from './prototype/create-scope'\nimport { dispose } from './prototype/dispose'\nimport { findServiceDescriptor } from './prototype/find-service-descriptor'\nimport { getServiceName } from './prototype/get-service-name'\nimport { isRegistered } from './prototype/is-registered'\nimport { lazy } from './prototype/lazy'\nimport { register } from './prototype/register'\nimport { registerClass } from './prototype/register-class'\nimport { registerInstance } from './prototype/register-instance'\nimport { resolve } from './prototype/resolve'\nimport { throwIfDisposed } from './prototype/throw-if-disposed'\nimport { tryResolve } from './prototype/try-resolve'\nimport { validateNoCycles } from './prototype/validate-no-cycles'\nimport { IServiceDescriptor, IServiceManager, ServiceIdType } from './service-manager.types'\n\nexport const ServiceManager = function (this: IServiceManager, parent?: IServiceManager) {\n    Object.defineProperty(this, 'services', {\n        value: new Map<ServiceIdType, IServiceDescriptor>(),\n        writable: false, // Prevent modification\n        configurable: false, // Prevent deletion or redefinition\n        enumerable: true // Make it enumerable for introspection\n    })\n    Object.defineProperty(this, 'singletonInstances', {\n        value: new Map<ServiceIdType, any>(),\n        writable: false, // Prevent modification\n        configurable: false, // Prevent deletion or redefinition\n        enumerable: true // Make it enumerable for introspection\n    })\n    Object.defineProperty(this, 'scopedInstances', {\n        value: new Map<ServiceIdType, any>(),\n        writable: false, // Prevent modification\n        configurable: false, // Prevent deletion or redefinition\n        enumerable: true // Make it enumerable for introspection\n    })\n    Object.defineProperty(this, 'parent', {\n        value: parent,\n        writable: false, // Prevent modification\n        configurable: false, // Prevent deletion or redefinition\n        enumerable: true // Make it enumerable for introspection\n    })\n\n    Object.defineProperty(this, 'resolutionStack', {\n        value: new Set<ServiceIdType>(),\n        writable: false, // Prevent modification\n        configurable: false, // Prevent deletion or redefinition\n        enumerable: true // Make it enumerable for introspection\n    })\n\n    this.isDisposed = false\n} as any as IServiceManager\n\nObject.assign(ServiceManager.prototype, {\n    validateNoCycles,\n    register,\n    registerClass,\n    registerInstance,\n    resolve,\n    tryResolve,\n    lazy,\n    isRegistered,\n    createScope,\n    dispose,\n    findServiceDescriptor,\n    throwIfDisposed,\n    getServiceName\n})\n","import { EventsType } from './events.types'\n\nconst _toFlags = function (\n    fieldName: string,\n    emitterName: string,\n    types: EventsType[],\n    action: string,\n    target?: string\n) {\n    return `${fieldName}.${emitterName}:[${types.join(',')}].[${action}]${target ? ' => [' + target + ']' : ''}`\n}\n\nexport default _toFlags\n","import { IExtendedInput, IInputBase } from '@core/input-engine/core/input-base/input-base.types'\nimport { EventsType, IEvents } from './events.types'\nimport _toFlags from './to-flags'\n\nexport const newEvent = (\n    fieldName: string,\n    emitterName: string,\n    type: EventsType,\n    action: string,\n    target?: string,\n    fieldRef?: IExtendedInput | IInputBase\n): IEvents => {\n    return {\n        fieldName,\n        emitterName,\n        action,\n        types: [type],\n        target,\n        toFlags: () => _toFlags(fieldName, emitterName, [type], action, target),\n        fieldRef\n    }\n}\n","import { IServiceManager } from '@core/managers/service-manager/service-manager.types'\nimport { IConfiguration } from './i-configuration'\n\nexport const SConfigurationManager = Symbol.for('IConfigurationManager')\n\nexport interface IConfigurationManager {\n    new (sm: IServiceManager): IConfigurationManager\n    sm: IServiceManager\n    configurations: IConfiguration[]\n    activeConfiguration: IConfiguration\n    /** This function must search for configuration following the path\n     *  the very last element provided is the name of the configuration (all coniguration has name property)\n     *  BUT! take care to determine if the container is an array or an object.\n     *  If it is an array, the search should be done by find(o => o.name === lastElement) .\n     *  if it is an object the search should be done by Object.keys(configurationLastItemButOne).find(o => o[lastElement] === true)\n     *  the search must be done from the activeConfiguration property\n     */\n    getConfigByName<T>(...names: string[]): T | undefined\n    /**\n     * This function is used to add a configuration to the collection of configurations\n     * @param name\n     * @param config\n     */\n    setConfiguration(name: string, config: IConfiguration): void\n    /**\n     * This function must be issued after loading a config file. to determine which will be the active session configuration\n     * @param name\n     * @param config\n     */\n    useConfiguration(name: string): IConfiguration | undefined\n    /**\n     * This functon is used to load a json from a path\n     * @param path\n     * @returns Promise that resolves when the configuration is loaded\n     */\n    loadJson: (path: string) => Promise<void>\n    /**\n     * this function list all defined configuration into the console.table\n     * it's used to have a quick view over the defined configurations\n     *\n     * Format: | name | target environment | is Active |  JSON configuration |\n     * @returns\n     */\n    printConfiguration: () => void\n\n    /**\n     * Validates a configuration object and merges it with defaults\n     * @param config - Partial configuration to validate\n     * @returns Complete validated configuration\n     */\n    validateConfiguration: (config: Partial<IConfiguration>) => IConfiguration\n\n    /**\n     * Merges a partial configuration with the default configuration\n     * @param config - Partial configuration to merge with defaults\n     * @returns Complete configuration with defaults applied\n     */\n    mergeConfigurationWithDefaults: (config: Partial<IConfiguration>) => IConfiguration\n\n    /**\n     * Gets the default configuration object\n     * @returns The default configuration\n     */\n    getDefaultConfiguration: () => IConfiguration\n}\n","import { InputDataTypes } from '@core/framework/common/common.input.data.types'\nimport { ITrackingManager } from '@core/managers/tracking-manager/tracker-manager.types'\nimport { IServiceInjectableProperties } from '@core/types'\n\nimport { IInitializableDependency } from '../initialization-manager/initialization-manager.types'\nimport { IServiceManager } from '../types'\n\nexport const SDomManager = Symbol.for('IDomManager')\n\nexport interface IAria {\n    name: string\n    value: string\n}\n\nexport type IDomManager<T extends HTMLElement> = IDomManagerBase<T> & ITrackingManager\n\nexport interface IDomManagerBase<T extends HTMLElement>\n    extends IInitializableDependency,\n        IServiceInjectableProperties {\n    new (serviceManager: IServiceManager): IDomManager<T>\n    elements: T[]\n    tracker: ITrackingManager | null\n    internalHTMLElementRef: HTMLInputElement[] | null\n\n    ref: (o: HTMLInputElement | null) => void\n    dmSetFocus: (id: string) => void\n    dmRegister: (element: T | null) => void\n    dmRegisterById: (id: string) => void\n    dmGet: (id: string) => T | null\n    dmExists: (id: string) => boolean\n    dmSetValue: (id: string, value: InputDataTypes) => void\n    dmClear: () => void\n    dmSetChecked: (id: string, value: boolean) => void\n    dmSetClass: (id: string, rules: CSSPropertyRule) => void\n    dmSetEnabled: (id: string, enabled: boolean) => void\n    dmSetSelected: (id: string, selectionValue: string | null) => void\n    dmAriaSet: (id: string, name: string) => void\n    dmAddArias: (id: string, arias: IAria[]) => void\n    dmUpdateAria: <T extends HTMLElement>(id: string, aria: IAria) => void\n\n    // Extension methods for modular functionality\n    extend: (extensionName: string, extension: Record<string, any>) => void\n    hasExtension: (extensionName: string) => boolean\n    extensions?: Map<string, Record<string, any>>\n}\nexport const DomUtils = {\n    getElementById: (id: string): HTMLElement | null => document.getElementById(id),\n    focusElement: (element: HTMLElement | null) => {\n        if (element) element.focus()\n    },\n    clearElement: (element: HTMLInputElement | null) => {\n        if (element) element.value = ''\n    }\n}\n","import { IDomManager, SDomManager } from '@core/managers/dom-manager/dom-manager.types'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { IInputBase } from '../input-base.types'\n\nexport const useDomManager = function (\n    this: IInputBase,\n    domManagerInstance: IDomManager<HTMLInputElement> | null\n): IInputBase {\n    try {\n        // 🎯 OPTIMIZATION: Lazy DOM manager (40-50% gain)\n        // Only create DOM manager when it's actually accessed\n        if (domManagerInstance !== null) {\n            this.domManager = domManagerInstance\n        } else {\n            // Define lazy getter that resolves on first access\n            let _domManager: IDomManager<HTMLInputElement> | null = null\n            Object.defineProperty(this, 'domManager', {\n                get: function () {\n                    if (!_domManager && this.serviceManager) {\n                        _domManager = (this.serviceManager.lazy as <T>(id: any) => () => T)<\n                            IDomManager<HTMLInputElement>\n                        >(SDomManager)?.()\n                    }\n                    return _domManager\n                },\n                set: function (value: IDomManager<HTMLInputElement>) {\n                    _domManager = value\n                },\n                configurable: true,\n                enumerable: true\n            })\n        }\n        return this\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            useDomManager.name,\n            `an error has occured when initializing initializeDomManager ${this.name} class: ${e.message}`\n        )\n        return this\n    }\n}\n","import { logManager } from '@core/managers/log-manager/log-manager'\nimport { INotificationManager } from '@core/managers/notification-manager/notification-manager-base.types'\nimport { IInputBase } from '../input-base.types'\n\nexport const useNotificationManager = function (\n    this: IInputBase,\n    notifierInstance: INotificationManager\n): IInputBase {\n    try {\n        this.notificationManager = notifierInstance\n        return this\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            useNotificationManager.name,\n            `an error has occured when initializing initializeNotifier ${this.name} class: ${e.message}`\n        )\n        return this\n    }\n}\n","import {\n    InputClassStatesNamesType,\n    InputClassStatesValuesEnum\n} from '@core/framework/common/common.input.state.types'\nimport { IExtendedInputBase } from '@core/input-engine/core/input-base/input-base.types'\n\nexport const SStyleManager = Symbol.for('IStyleManager')\n\nexport const defaultFieldInputCSSClassName = 'f-input'\n\n/**\n * Interface representing the state flags for form field styling.\n *\n * These flags control the visual appearance and CSS classes applied to form fields\n * based on their current state and user interactions.\n */\nexport interface IFieldStateFlags {\n    /** Whether the field value has been modified by the user */\n    dirty: boolean\n    /** Whether the field has validation errors */\n    errors: boolean\n    /** Whether the field currently has focus */\n    focus: boolean\n    /** Whether the field's dropdown/drawer is open (for select, date picker, etc.) */\n    open: boolean\n    /** Whether the field value is in its original, unmodified state */\n    pristine: boolean\n    /** Whether the field value passes all validation rules */\n    valid: boolean\n    /** Whether the field is required for form submission */\n    required: boolean\n    /** Whether the field is in a loading/processing state */\n    busy: boolean\n}\n\n/**\n * Default state flags for form fields.\n *\n * These represent the initial state of a field before any user interaction.\n */\nexport const defaultFieldStateFlags: IFieldStateFlags = {\n    dirty: false,\n    errors: false,\n    focus: false,\n    open: false,\n    pristine: true,\n    valid: true,\n    required: false,\n    busy: false\n}\n\n/**\n * Interface for field styling properties managed by the StyleManager.\n */\nexport interface IFieldStyleProperties {\n    /** The complete CSS class name string for the field */\n    className: string\n    /** Map of state-based CSS classes for dynamic styling */\n    classesList: Map<InputClassStatesNamesType, InputClassStatesValuesEnum>\n}\n\n/**\n * Main interface for the StyleManager that handles dynamic CSS class management for form fields.\n *\n * The StyleManager provides:\n * - Dynamic CSS class application based on field state\n * - State flag management for visual feedback\n * - Integration with field validation and interaction states\n * - Consistent styling across all field types\n * - Performance-optimized class name generation\n *\n * The StyleManager automatically updates field appearance based on:\n * - User interactions (focus, blur, input)\n * - Validation results (valid, invalid, errors)\n * - Field state changes (dirty, pristine, required)\n * - Loading states (busy, processing)\n *\n * @example\n * ```typescript\n * // StyleManager is typically used internally by field components\n * const styleManager = field.styleManager;\n *\n * // Update field state\n * styleManager.update('dirty', true);\n * styleManager.update('valid', false);\n *\n * // Get current CSS classes\n * const cssClasses = styleManager.classNames(); // \"f-input dirty invalid\"\n *\n * // Get state flags for conditional rendering\n * const flags = styleManager.getFlagsObject();\n * if (flags.errors) {\n *   // Show error message\n * }\n * ```\n */\nexport interface IStyleManager extends IFieldStyleProperties, IExtendedInputBase {\n    /**\n     * Constructor for creating a new StyleManager instance\n     */\n    new (): IStyleManager\n\n    /**\n     * Updates a specific field state flag and regenerates CSS classes\n     * @param type - The type of state to update (dirty, valid, focus, etc.)\n     * @param state - The new boolean state value\n     */\n    update: (type: InputClassStatesNamesType, state: boolean) => void\n\n    /**\n     * Gets the CSS class name for a specific state\n     * @param state - The state type to get the class for\n     * @returns The CSS class name for the specified state\n     */\n    get: (state: InputClassStatesNamesType) => string\n\n    /**\n     * Gets an array of all field state flags\n     * @returns Array of field state flag objects\n     */\n    getFlagsList: () => IFieldStateFlags[]\n\n    /**\n     * Gets the current field state flags as a single object\n     * @returns Object containing all current field state flags\n     */\n    getFlagsObject: () => IFieldStateFlags\n\n    /**\n     * Generates the complete CSS class name string for the field\n     * @returns Space-separated string of CSS class names based on current state\n     */\n    classNames: () => string\n\n    // Extension methods for modular functionality\n    extend?: (extensionName: string, extension: Record<string, any>) => void\n    hasExtension?: (extensionName: string) => boolean\n    extensions?: Map<string, Record<string, any>>\n}\n","import { logManager } from '@core/managers/log-manager/log-manager'\nimport { IStyleManager, SStyleManager } from '@core/managers/style-manager/style-manager.types'\nimport { IInputBase } from '../input-base.types'\n\nexport const useStyleManager = function (\n    this: IInputBase,\n    styleManager: IStyleManager | null\n): IInputBase {\n    try {\n        if (!styleManager) {\n            // 🎯 OPTIMIZATION: Lazy style manager\n            let _styleManager: IStyleManager | null = null\n            Object.defineProperty(this, 'styleManager', {\n                get: function () {\n                    if (!_styleManager && this.serviceManager) {\n                        _styleManager = (\n                            this.serviceManager.lazy as <T>(id: any) => () => T\n                        )<IStyleManager>(SStyleManager)?.()\n                        if (_styleManager) {\n                            _styleManager.input = this\n                        }\n                    }\n                    return _styleManager\n                },\n                set: function (value: IStyleManager) {\n                    _styleManager = value\n                    if (_styleManager) {\n                        _styleManager.input = this\n                    }\n                },\n                configurable: true,\n                enumerable: true\n            })\n        } else {\n            this.styleManager = styleManager\n            this.styleManager.input = this\n        }\n        return this\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            useStyleManager.name,\n            `an error has occured when initializing initializeStyle ${this.name} class: ${e.message}`\n        )\n        return this\n    }\n}\n","import { logManager } from '@core/managers/log-manager/log-manager'\nimport { ITrackingManager } from '@core/managers/tracking-manager/tracker-manager.types'\nimport { IInputBase } from '../input-base.types'\n\nexport const useTrackingManager = function (\n    this: IInputBase,\n    trackerInstance: ITrackingManager\n): IInputBase {\n    try {\n        this.trackingManager = trackerInstance\n        return this\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            useTrackingManager.name,\n            `an error has occured when initializing initializeTracking ${this.name} class: ${e.message}`\n        )\n        return this\n    }\n}\n","export const SValidationManager = Symbol.for('IValidationManager')\n","/**\n * Standard validation error codes used throughout the system.\n *\n * These codes provide consistent error identification across all validation\n * scenarios and can be used for internationalization and custom error handling.\n *\n * @example\n * ```typescript\n * // Using error codes in custom validators\n * if (value < minValue) {\n *   return newValidationResult(\n *     false,\n *     fieldName,\n *     ValidationErrorsCodes.min,\n *     triggerEvents,\n *     'Value is too small'\n *   );\n * }\n * ```\n */\nexport const ValidationErrorsCodes = {\n    /** Numeric value is below minimum threshold */\n    min: 'MIN_ERROR',\n\n    /** Numeric value exceeds maximum threshold */\n    max: 'MAX_ERROR',\n\n    /** Text length is below minimum requirement */\n    minLength: 'MIN_LENGTH_ERROR',\n\n    /** Text length exceeds maximum limit */\n    maxLength: 'MAX_LENGTH_ERROR',\n\n    /** Required field is empty or missing */\n    required: 'REQUIRED',\n\n    /** Input doesn't match required pattern/format */\n    pattern: 'PATTERN',\n\n    /** Custom validation rule failed */\n    custom: 'CUSTOM'\n}\n","import { EventsType } from '@core/framework/events/events.types'\nimport { IValidationResult } from '../interfaces/i-validation-result'\n\nexport const newValidationResult = function (\n    state: boolean,\n    fieldName: string,\n    code: string,\n    triggerEventTypes: EventsType[],\n    error?: string,\n    guide?: string\n): IValidationResult {\n    return { state, fieldName, code, error, guide, triggerEventTypes }\n}\n","import { IValidationResult } from '../interfaces/i-validation-result'\nimport { IValidationResults } from '../interfaces/i-validation-results'\n\nexport const newValidationResults = function (\n    isValid: boolean,\n    results?: IValidationResult[],\n    formId?: string\n): IValidationResults {\n    return { isValid, results: results ?? [], formId }\n}\n","import { logManager } from '@core/managers/log-manager/log-manager'\nimport {\n    IValidationManager,\n    SValidationManager\n} from '@core/managers/validation-manager/validation-manager.types'\nimport { IInputBase } from '../input-base.types'\n\nexport const useValidationManager = function (\n    this: IInputBase,\n    validationStrategyInstance: IValidationManager | null\n): IInputBase {\n    try {\n        // 🎯 OPTIMIZATION: Lazy validation manager (40-50% gain)\n        // Only create validation manager when it's actually accessed\n        if (validationStrategyInstance !== null) {\n            this.validationManager = validationStrategyInstance\n        } else {\n            // Define lazy getter that resolves on first access\n            let _validationManager: IValidationManager | null = null\n            Object.defineProperty(this, 'validationManager', {\n                get: function () {\n                    if (!_validationManager && this.serviceManager) {\n                        _validationManager = (\n                            this.serviceManager.lazy as <T>(id: any) => () => T\n                        )<IValidationManager>(SValidationManager)?.()\n                    }\n                    return _validationManager\n                },\n                set: function (value: IValidationManager) {\n                    _validationManager = value\n                },\n                configurable: true,\n                enumerable: true\n            })\n        }\n        return this\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            useValidationManager.name,\n            `an error has occured when initializing initializeValidationStrategy ${this.name} class: ${e.message}`\n        )\n        return this\n    }\n}\n","import { InputDataTypes } from '@core/framework/common/common.input.data.types'\nimport { IExtendedInput, IInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IInitializableDependency } from '../initialization-manager/initialization-manager.types'\n\nexport const SValueManager = Symbol.for('IValueManager')\n\nexport type TGetter<T extends Partial<InputDataTypes> | null> = (field: IExtendedInput) => T\nexport type TSetter<T extends Partial<InputDataTypes> | null> = (\n    field: IExtendedInput,\n    value: T\n) => void\n\nexport type OutputPurposeType = 'validation' | 'display' | 'submission' | 'all'\n\nexport type FieldValuePropertyType = 'value' | 'id' | 'selectedOptionId' | 'checked' | 'objectValue'\n\nexport interface IParserStrategy<T extends Partial<InputDataTypes> | null> {\n    id: string\n    concernedTypes: string[]\n    fieldValueProperty: FieldValuePropertyType\n    setter: TSetter<T>\n    getter: TGetter<T>\n}\n\nexport const setParserStrategy = <T extends Partial<InputDataTypes> | null>(\n    id: string,\n    concernedTypes: string[],\n    fieldValueProperty: FieldValuePropertyType,\n    setter: TSetter<T>,\n    getter: TGetter<T>\n): IParserStrategy<T> => {\n    return {\n        id,\n        concernedTypes,\n        fieldValueProperty,\n        setter,\n        getter\n    }\n}\n\nexport interface IValueManagerProperties {\n    valueStrategies: IParserStrategy<InputDataTypes>[]\n}\n\nexport interface IValueManager extends IValueManagerProperties, IInitializableDependency {\n    new (): IValueManager\n    acceptValueStrategies: (...parsers: IParserStrategy<any>[]) => void\n    addValueStrategies: (...parsers: IParserStrategy<any>[]) => void\n    getAsString: (field: IExtendedInput) => string | null\n    setValue: (field: IExtendedInput, value: Partial<InputDataTypes> | null) => void\n    setValueFromHtmlElement: (field: IExtendedInput, value: HTMLInputElement | null) => void\n    getValue: (field: IExtendedInput, purpose?: OutputPurposeType) => Partial<InputDataTypes> | null\n    clear: (field: IExtendedInput | IInput) => void\n}\n","import { logManager } from '@core/managers/log-manager/log-manager'\nimport { IValueManager, SValueManager } from '@core/managers/value-manager/value-manager.types'\nimport { IInputBase } from '../input-base.types'\n\nexport const useValueManager = function (\n    this: IInputBase,\n    valueManagerInstance: IValueManager | null\n): IInputBase {\n    try {\n        // 🎯 OPTIMIZATION: Lazy value manager\n        if (valueManagerInstance !== null) {\n            this.valueManager = valueManagerInstance\n        } else {\n            // Define lazy getter that resolves on first access\n            let _valueManager: IValueManager | null = null\n            Object.defineProperty(this, 'valueManager', {\n                get: function () {\n                    if (!_valueManager && this.serviceManager) {\n                        _valueManager = (\n                            this.serviceManager.lazy as <T>(id: any) => () => T\n                        )<IValueManager>(SValueManager)?.()\n                    }\n                    return _valueManager\n                },\n                set: function (value: IValueManager) {\n                    _valueManager = value\n                },\n                configurable: true,\n                enumerable: true\n            })\n        }\n        return this\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            useValueManager.name,\n            `an error has occured when initializing initializeValueStrategy ${this.name} class: ${e.message}`\n        )\n        return this\n    }\n}\n","import { logManager } from '@core/managers/log-manager/log-manager'\nimport { IInputBase } from '../input-base.types'\n\nexport interface IInitilizationCheckResult {\n    success: boolean\n    errors: string[]\n}\n\nexport const defaultPrecheck: IInitilizationCheckResult = { success: true, errors: [] }\n\nexport const checkInitialized = function (this: IInputBase): IInitilizationCheckResult {\n    const output: string[] = []\n    try {\n        if (!this) {\n            output.push('_baseInput must be initialized')\n        }\n        if (!this.trackingManager) {\n            output.push('tracker must be initialized')\n        }\n        if (!this.notificationManager) {\n            output.push('notifier must be initialized')\n        }\n        if (!this.domManager) {\n            output.push('dom must be initialized')\n        }\n        if (!this.styleManager) {\n            output.push('style must be initialized')\n        }\n        if (!this.validationManager) {\n            output.push('validation strategy must be initialized')\n        }\n        if (!this.valueManager) {\n            output.push('value strategy must be initialized')\n        }\n        if (this.validationManager?.validationStrategies?.length === 0) {\n            output.push(\n                `validation strategy needs at least one strategy in order to make it's work.\n                Solution:\n                - add a validation stategy\n                `\n            )\n        }\n        if (this.valueManager?.valueStrategies?.length === 0) {\n            output.push(\n                `value strategy needs at least one strategy in order to persist and get data back.\n                Solution:\n                - add a value stategy\n                `\n            )\n        }\n        return { success: output.length === 0, errors: output }\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            checkInitialized.name,\n            `A Criticla error has occured when initializing ${this.name} class: ${e.message}`\n        )\n        return { success: output.length === 0, errors: output }\n    }\n}\n","import { IInput, IInputBase } from '../input-base.types'\n\n/**\n * Clears the state and value of the field input, resetting it to its initial state.\n *\n * This method performs the following actions:\n * - Clears the `errors` and `guides` arrays.\n * - Resets the `checked` property of all associated internal HTML input element references.\n * - Notifies listeners about the `validate` and `changed` events with the appropriate field state.\n * - Updates the field's state style to reflect the \"clear\" action.\n * - Sets the field's value to `null`.\n * - Focuses the field input.\n * - Resets the `value` and `checked` properties of the main internal HTML input element reference, if it exists.\n *\n * @this IInput - The field input instance on which the method is called.\n */\nexport const clear = function (this: IInputBase) {\n    this.styleManager?.update('clear', true)\n    this.valueManager.clear(this)\n    this.domManager.dmClear()\n    this.focus()\n}\n","import { IInput } from '../input-base.types'\n\n/**\n * Toggles the enabled state of the field input and updates the associated HTML element.\n *\n * @param enabled - A boolean indicating whether the field input should be enabled (`true`) or disabled (`false`).\n *\n * @remarks\n * - When `enabled` is set to `false`, the method will blur the associated HTML element if it is focused.\n * - The `disabled` property of the associated HTML element is updated to reflect the enabled state.\n * - If the internal HTML element reference (`internalHTMLElementRef`) is not available, the method exits early.\n *\n * @this IInput - The field input instance on which the method is invoked.\n */\nexport const enable = function (this: IInput, enabled: boolean) {\n    this.enabled = enabled\n    this.domManager?.dmSetEnabled(this.id.toString(), enabled)\n}\n","import { IInput } from '../input-base.types'\n\n/**\n * Here we have a focus function that will focus the main root input if it's available, otherwise\n * it will try to focus the first child option item.\n */\nexport const focus = function (this: IInput) {\n    this.domManager?.dmSetFocus(this.id.toString())\n}\n","import { newEvent } from '@core/framework/events/new-event'\n\nimport { IExtendedInput } from '../input-base.types'\n\nexport const onBlurHandle = (f: IExtendedInput) => {\n    if (!f.input.validationManager?.triggerKeyWordType.includes('onBlur')) return\n\n    // console.log('onBlurHandle', f.name, f.value)\n    f.input.notificationManager?.debounceNotify(\n        'onValidate',\n        f.input.onValidateDelay,\n        newEvent(f.input.name, onBlurHandle.name, 'onValidate', onBlurHandle.name, f.input.name, f),\n        String(f.input.id)\n    )\n}\n","import { IEvents } from '@core/framework/events/events.types'\n\nimport { onBlurHandle } from '../events/on-blur-handle'\nimport { IExtendedInput, IInput } from '../input-base.types'\n\n/**\n * Handles the blur event for a field input.\n *\n * @this IInput - The context of the field input instance.\n * @param data - Optional additional data associated with the blur event.\n * Logs the blur event, the provided data, and the current value of the field input.\n */\nexport const handleOnBlur = function <T extends IEvents>(this: IExtendedInput, data?: T) {\n    onBlurHandle(data?.fieldRef as IExtendedInput)\n}\n","import { newEvent } from '@core/framework/events/new-event'\n\nimport { IExtendedInput } from '../input-base.types'\n\nexport const onClearHandle = (f: IExtendedInput) => {\n    if (!f.input.validationManager?.triggerKeyWordType.includes('onClear')) return\n\n    // console.log('onClearHandle', f.name, f.value)\n    f.input.notificationManager?.debounceNotify(\n        'onValidate',\n        f.input.onValidateDelay,\n        newEvent(\n            f.input.name,\n            onClearHandle.name,\n            'onValidate',\n            `field.state.${onClearHandle.name}`,\n            f.input.name,\n            f\n        ),\n        String(f.input.id)\n    )\n}\n","import { IEvents } from '@core/framework/events/events.types'\n\nimport { onClearHandle } from '../events/on-clear-handle'\nimport { IExtendedInput, IInput } from '../input-base.types'\n\n/**\n * Handles the blur event for a field input.\n *\n * @this IInput - The context of the field input instance.\n * @param data - Optional additional data associated with the blur event.\n * Logs the blur event, the provided data, and the current value of the field input.\n */\nexport const handleOnClear = function <T extends IEvents>(this: IExtendedInput, data?: T) {\n    onClearHandle(data?.fieldRef as IExtendedInput)\n}\n","import { newEvent } from '@core/framework/events/new-event'\n\nimport { IExtendedInput } from '../input-base.types'\n\nexport const onFocusHandle = (f: IExtendedInput) => {\n    if (!f.input.validationManager?.triggerKeyWordType.includes('onFocus')) return\n\n    // console.log('onFocusHandle', f.name, f.value)\n    f.input.notificationManager?.debounceNotify(\n        'onValidate',\n        f.input.onValidateDelay,\n        newEvent(\n            f.input.name,\n            onFocusHandle.name,\n            'onValidate',\n            `field.state.${onFocusHandle.name}`,\n            f.input.name,\n            f\n        ),\n        String(f.input.id)\n    )\n}\n","import { IEvents } from '@core/framework/events/events.types'\n\nimport { onFocusHandle } from '../events/on-focus-handle'\nimport { IExtendedInput, IInput } from '../input-base.types'\n\n/**\n * Handles the focus event for a field input.\n *\n * @this IInput - The context of the field input instance.\n * @param data - Optional data associated with the focus event.\n * Logs the focus event details, including the optional data and the current value of the field input.\n */\nexport const handleOnFocus = function <T extends IEvents>(this: IExtendedInput, data?: T) {\n    onFocusHandle(data?.fieldRef as IExtendedInput)\n}\n","import { newEvent } from '@core/framework/events/new-event'\n\nimport { IExtendedInput } from '../input-base.types'\nimport { onFocusHandle } from './on-focus-handle'\n\nexport const onKeyPressHandle = function (f: IExtendedInput) {\n    if (!f.input.validationManager?.triggerKeyWordType.includes('onKeyPress')) return\n\n    // console.log('onFocusHandle', f.name, f.value)\n    f.input.notificationManager?.debounceNotify(\n        'onValidate',\n        f.input.onValidateDelay,\n        newEvent(\n            f.input.name,\n            onFocusHandle.name,\n            'onValidate',\n            `field.state.${onFocusHandle.name}`,\n            f.input.name,\n            f\n        ),\n        String(f.input.id)\n    )\n}\n","import { IEvents } from '@core/framework/events/events.types'\n\nimport { onKeyPressHandle } from '../events/on-key-press-handler'\nimport { IExtendedInput, IInput } from '../input-base.types'\n\n/**\n * Handles the focus event for a field input.\n *\n * @this IInput - The context of the field input instance.\n * @param data - Optional data associated with the focus event.\n * Logs the focus event details, including the optional data and the current value of the field input.\n */\nexport const handleOnKeyPress = function <T extends IEvents>(this: IExtendedInput, data?: T) {\n    onKeyPressHandle(data?.fieldRef as IExtendedInput)\n}\n","import { newEvent } from '@core/framework/events/new-event'\n\nimport { IExtendedInput } from '../input-base.types'\nimport { onFocusHandle } from './on-focus-handle'\n\nexport const onKeyUpHandle = function (f: IExtendedInput) {\n    if (!f.input.validationManager?.triggerKeyWordType.includes('onKeyUp')) return\n    // console.log('onFocusHandle', f.name, f.value)\n    f.input.notificationManager?.debounceNotify(\n        'onValidate',\n        f.input.onValidateDelay,\n        newEvent(\n            f.input.name,\n            onFocusHandle.name,\n            'onValidate',\n            `field.state.${onFocusHandle.name}`,\n            f.input.name,\n            f\n        ),\n        String(f.input.id)\n    )\n}\n","import { IEvents } from '@core/framework/events/events.types'\n\nimport { onKeyUpHandle } from '../events/on-key-up-handler'\nimport { IExtendedInput, IInput } from '../input-base.types'\n\n/**\n * Handles the focus event for a field input.\n *\n * @this IInput - The context of the field input instance.\n * @param data - Optional data associated with the focus event.\n * Logs the focus event details, including the optional data and the current value of the field input.\n */\nexport const handleOnKeyUp = function <T extends IEvents>(this: IExtendedInput, data?: T) {\n    onKeyUpHandle(data?.fieldRef as IExtendedInput)\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { IExtendedInput } from '../input-base.types'\n\n/**\n * Checks if validation should be interrupted by custom onBeforeValidation hook\n */\nexport const shouldInterruptByBeforeValidation = <T extends IEvents>(\n    data: T,\n    functionName: string\n): boolean => {\n    if (\n        data?.fieldRef?.input?.onBeforeValidation &&\n        !data?.fieldRef?.input?.onBeforeValidation?.()\n    ) {\n        data?.fieldRef?.input.message(\n            'info',\n            functionName,\n            `${functionName} validation was interrupted by custom onBeforeValidation`\n        )\n        return true\n    }\n    return false\n}\n\n/**\n * Checks if validation should be interrupted by formular validateOnFirstSubmit setting\n */\nexport const shouldInterruptByFirstSubmitRule = <T extends IEvents>(\n    data: T,\n    functionName: string\n): boolean => {\n    if (data?.fieldRef?.input?.formular?.validateOnFirstSubmit) {\n        data?.fieldRef?.input.message(\n            'info',\n            functionName,\n            `${functionName} validation was interrupted by the formular validationOnFirstSubmit property`\n        )\n        return true\n    }\n    return false\n}\n\n/**\n * Checks if required field data is missing\n */\nexport const isRequiredDataMissing = <T extends IEvents>(data: T): boolean => {\n    return data?.fieldRef?.input?.name === undefined || data?.fieldRef?.input?.value === undefined\n}\n\n/**\n * Checks if validation manager is available\n */\nexport const hasValidationManager = <T extends IEvents>(\n    data: T,\n    context: IExtendedInput,\n    functionName: string\n): boolean => {\n    if (!data?.fieldRef?.input?.validationManager) {\n        console.warn('handleValidation', context)\n        return false\n    }\n\n    if (!data?.fieldRef?.input.validationManager) {\n        data?.fieldRef?.input.message(\n            'critical',\n            context.name,\n            `${functionName} has no validationOptions in order to proceed to any validation please provide valid ValidationStrategy at the initialization of the field. process ended`\n        )\n        return false\n    }\n    return true\n}\n","import { IEvents } from '@core/framework/events/events.types'\n\n/**\n * Runs custom onAfterValidation hook if available\n */\nexport const runAfterValidationHook = <T extends IEvents>(data: T): void => {\n    data?.fieldRef?.input?.onAfterValidation?.()\n}\n\n/**\n * Handles validation errors by logging them\n */\nexport const handleValidationError = <T extends IEvents>(\n    data: T,\n    context: { name: string },\n    functionName: string,\n    error: any\n): void => {\n    data?.fieldRef?.input.message('critical', context.name, `${functionName} ${error}`)\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { newEvent } from '@core/framework/events/new-event'\n\nimport { IInputBase } from '../input-base.types'\n\n/**\n * Triggers UI update notification\n */\nexport const triggerUiUpdateNotification = <T extends IEvents>(\n    data: T,\n    functionName: string\n): void => {\n    if (!data?.fieldRef?.input?.notificationManager) {\n        return\n    }\n\n    const baseInput = data.fieldRef.input as unknown as IInputBase\n    baseInput?.notificationManager?.debounceNotify(\n        'onUiUpdate',\n        baseInput.onUiUpdateDelay,\n        newEvent(\n            baseInput.name,\n            functionName,\n            'onUiUpdate',\n            'field',\n            baseInput.name,\n            data.fieldRef\n        ),\n        String(baseInput.id)\n    )\n}\n\n/**\n * Triggers validation change notification\n */\nexport const triggerValidationChangeNotification = <T extends IEvents>(\n    data: T,\n    functionName: string\n): void => {\n    if (!data?.fieldRef?.input?.notificationManager) {\n        return\n    }\n    const baseInput = data.fieldRef.input as unknown as IInputBase\n    baseInput?.notificationManager?.debounceNotify(\n        'onValidationChange',\n        baseInput.onUiUpdateDelay,\n        newEvent(\n            baseInput.name,\n            functionName,\n            'onValidationChange',\n            'field',\n            baseInput.name,\n            data.fieldRef\n        ),\n        String(baseInput.id)\n    )\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { IValidationResult } from '@core/managers/validation-manager/validation-manager.types'\n\n/**\n * Sets the busy state of an input field\n */\nexport const setFieldBusyState = <T extends IEvents>(data: T, isBusy: boolean): void => {\n    data?.fieldRef?.input?.setInputBusy(isBusy)\n}\n\n/**\n * Stores validation results and updates field validity state\n */\nexport const storeValidationResults = <T extends IEvents>(\n    data: T,\n    results: IValidationResult[]\n): void => {\n    if (!data?.fieldRef?.input) return\n\n    // Keep the validation results for the field\n    data.fieldRef.input.validationResults = results\n    data.fieldRef.input.isValid = results.every((result) => result.state)\n}\n\n/**\n * Logs validation debug information\n */\nexport const logValidationDebug = <T extends IEvents>(data: T): void => {\n    console.log(\n        '----handleValidation',\n        data?.fieldRef?.dependencyName,\n        data?.fieldRef?.input?.value\n    )\n}\n","import { IAria } from '@core/managers/dom-manager/dom-manager.types'\nimport { IInput } from '../input-base/input-base.types'\n\nexport interface IAriaHelper {\n    new (): IAriaHelper\n    arias: IAria[]\n    add: (name: string, value: string) => void\n    addMany: (...arias: IAria[]) => void\n    apply: (f: IInput) => void\n}\n\nexport const aria = (name: string, value: string): IAria => {\n    return { name, value }\n}\n\nexport const AriaHelper = function (this: IAriaHelper) {\n    this.arias = []\n    this.addMany = function (this: IAriaHelper, ...arias: IAria[]) {\n        for (const a of arias) {\n            if (this.arias.find((o) => o.name === a.name)) {\n                continue\n            }\n            this.arias.push(a)\n        }\n    }\n    this.add = function (this: IAriaHelper, name: string, value: string) {\n        if (this.arias.find((o) => o.name === name)) {\n            return\n        }\n        this.arias.push(aria(name, value))\n    }\n    this.apply = function (this: IAriaHelper, f: IInput) {\n        f.domManager?.dmAddArias(f.id.toString(), this.arias)\n    }\n} as any as IAriaHelper\n","import { IEvents } from '@core/framework/events/events.types'\nimport { IValidationResult } from '@core/managers/validation-manager/validation-manager.types'\nimport { aria } from '../../accessibility/arias'\n\n/**\n * Updates style manager with validation states\n */\nexport const updateValidationStyles = <T extends IEvents>(\n    data: T,\n    results: IValidationResult[]\n): void => {\n    if (!data?.fieldRef?.input?.styleManager) return\n\n    const isValid = results.every((result) => result.state)\n    const hasErrors = results.some((result) => !result.state)\n\n    data.fieldRef.input.styleManager.update('valid', isValid)\n    data.fieldRef.input.styleManager.update('errors', hasErrors)\n}\n\n/**\n * Updates ARIA attributes for accessibility\n */\nexport const updateAriaAttributes = <T extends IEvents>(data: T, isValid: boolean): void => {\n    if (!data?.fieldRef?.input?.domManager || !data?.fieldRef?.input?.id) return\n\n    data.fieldRef.input.domManager.dmUpdateAria(\n        data.fieldRef.input.id.toString(),\n        aria('invalid', isValid ? 'false' : 'true')\n    )\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { IValidationResult } from '@core/managers/validation-manager/validation-manager.types'\nimport { IExtendedInput } from '../input-base.types'\n\n// Import all shared utilities\nimport {\n    hasValidationManager,\n    isRequiredDataMissing,\n    shouldInterruptByBeforeValidation,\n    shouldInterruptByFirstSubmitRule\n} from './validation-guards'\nimport { handleValidationError, runAfterValidationHook } from './validation-hooks'\nimport {\n    triggerUiUpdateNotification,\n    triggerValidationChangeNotification\n} from './validation-notifications'\nimport { logValidationDebug, setFieldBusyState, storeValidationResults } from './validation-state'\nimport { updateAriaAttributes, updateValidationStyles } from './validation-styles'\n\n/**\n * Common validation logic that can be shared between sync and async validation handlers\n */\ninterface IValidationProcessor<T extends IEvents> {\n    context: IExtendedInput\n    functionName: string\n    performPreValidationChecks: (data: T) => boolean\n    processValidationResults: (data: T, results: IValidationResult[]) => void\n    setBusyState: (data: T, isBusy: boolean) => void\n    handleError: (data: T, error: any) => void\n}\n\n/**\n * Common validation logic that can be shared between sync and async validation handlers\n */\nexport const ValidationProcessor = function (\n    this: IValidationProcessor<any>,\n    context: IExtendedInput,\n    functionName: string\n) {\n    this.context = context\n    this.functionName = functionName\n} as any as new <T extends IEvents>(\n    context: IExtendedInput,\n    functionName: string\n) => IValidationProcessor<T>\n\nObject.assign(ValidationProcessor.prototype, {\n    /**\n     * Performs pre-validation checks and returns false if validation should be skipped\n     */\n    performPreValidationChecks: function <T extends IEvents>(\n        this: IValidationProcessor<T>,\n        data: T\n    ): boolean {\n        // Check if validation should be interrupted by custom hooks\n        if (shouldInterruptByBeforeValidation(data, this.functionName)) {\n            return false\n        }\n\n        // Check if validation should be interrupted by formular settings\n        if (shouldInterruptByFirstSubmitRule(data, this.functionName)) {\n            return false\n        }\n\n        // Check if required data is missing\n        if (isRequiredDataMissing(data)) {\n            return false\n        }\n\n        // Log debug information\n        logValidationDebug(data)\n\n        // Check if validation manager is available\n        if (!hasValidationManager(data, this.context, this.functionName)) {\n            return false\n        }\n\n        return true\n    },\n\n    /**\n     * Processes validation results and updates UI state\n     */\n    processValidationResults: function <T extends IEvents>(\n        this: IValidationProcessor<T>,\n        data: T,\n        results: IValidationResult[]\n    ): void {\n        // Store validation results and update field validity\n        storeValidationResults(data, results)\n\n        // Update styles based on validation results\n        updateValidationStyles(data, results) // Update ARIA attributes for accessibility\n        updateAriaAttributes(data, data.fieldRef?.input?.isValid ?? false)\n\n        // Trigger UI update notification\n        triggerUiUpdateNotification(data, this.functionName)\n\n        // Trigger validation change notification\n        triggerValidationChangeNotification(data, this.functionName)\n\n        // Run custom post-validation hook\n        runAfterValidationHook(data)\n    },\n\n    /**\n     * Sets the field busy state\n     */\n    setBusyState: function <T extends IEvents>(\n        this: IValidationProcessor<T>,\n        data: T,\n        isBusy: boolean\n    ): void {\n        setFieldBusyState(data, isBusy)\n    },\n\n    /**\n     * Handles validation errors\n     */\n    handleError: function <T extends IEvents>(\n        this: IValidationProcessor<T>,\n        data: T,\n        error: any\n    ): void {\n        handleValidationError(data, this.context, this.functionName, error)\n    }\n})\n\n// Export all utilities for direct use if needed\nexport {\n    handleValidationError,\n    hasValidationManager,\n    isRequiredDataMissing,\n    logValidationDebug,\n    runAfterValidationHook,\n    setFieldBusyState,\n    shouldInterruptByBeforeValidation,\n    shouldInterruptByFirstSubmitRule,\n    storeValidationResults,\n    triggerUiUpdateNotification,\n    triggerValidationChangeNotification,\n    updateAriaAttributes,\n    updateValidationStyles\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { IValidationResult } from '@core/managers/validation-manager/validation-manager.types'\nimport { IExtendedInput } from '../input-base.types'\nimport { ValidationProcessor } from '../shared'\n\nexport const handleValidation = function <T extends IEvents>(this: IExtendedInput, data: T) {\n    const processor = new ValidationProcessor(this, handleValidation.name)\n\n    try {\n        // Perform pre-validation checks\n        if (!processor.performPreValidationChecks(data)) {\n            return []\n        }\n\n        let results: IValidationResult[] = []\n\n        processor.setBusyState(data, true)\n\n        // Perform synchronous validation\n        results = data?.fieldRef?.input.validationManager.validate(data?.fieldRef)\n\n        processor.setBusyState(data, false)\n\n        // Process validation results and update UI\n        processor.processValidationResults(data, results)\n\n        return results\n    } catch (e: any) {\n        processor.handleError(data, e)\n    } finally {\n        processor.setBusyState(data, false)\n    }\n    return []\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { IValidationResult } from '@core/managers/validation-manager/validation-manager.types'\nimport { IExtendedInput } from '../input-base.types'\nimport { ValidationProcessor } from '../shared'\n\nexport const handleValidationAsync = async function <T extends IEvents>(\n    this: IExtendedInput,\n    data: T\n) {\n    return new Promise<IValidationResult[]>(async (resolve, reject) => {\n        const processor = new ValidationProcessor(this, handleValidationAsync.name)\n\n        try {\n            // Perform pre-validation checks\n            if (!processor.performPreValidationChecks(data)) {\n                resolve([])\n                return\n            }\n\n            let results: IValidationResult[] = []\n\n            processor.setBusyState(data, true)\n\n            // Perform asynchronous validation\n            results = await data?.fieldRef?.input.validationManager.validateAsync(data?.fieldRef)\n\n            processor.setBusyState(data, false)\n\n            // Process validation results and update UI\n            processor.processValidationResults(data, results)\n\n            resolve(results)\n        } catch (e: any) {\n            processor.handleError(data, e)\n            reject(new Error(e))\n        } finally {\n            processor.setBusyState(data, false)\n        }\n    })\n}\n","import { IInput } from '../input-base.types'\n\n/**\n * Subscribes a callback function to observe changes in the field input.\n *\n * @param callback - The function to be called whenever a change is observed.\n * @this IInput - The context in which this function is called, representing the field input instance.\n */\nexport const hasChanges = function (this: IInput, callback: () => void) {\n    // Subscribe to field-specific channel using field ID\n    this?.notificationManager?.observers.subscribe(String(this.id), callback, false)\n}\n","export interface IAssertor {\n    isTrue: boolean\n    message: string\n}\n\nexport const newAssert = (isTrue: boolean, message: string) => {\n    return {\n        isTrue,\n        message\n    }\n}\n\nexport interface IExceptionManager {\n    new (...assertions: IAssertor[]): IExceptionManager\n    accept: (assertion: IAssertor) => void\n    assertors: IAssertor[]\n    errors: string[]\n    hasErrors: () => boolean\n    process: () => void\n    toString: () => string\n}\n\nexport const accept = function (this: IExceptionManager, assertion: IAssertor) {\n    this.assertors.push(assertion)\n}\n\nexport const hasErrors = function (this: IExceptionManager): boolean {\n    return this.errors.length > 0\n}\n\nexport const toString = function (this: IExceptionManager) {\n    return this.errors.join('\\n')\n}\n\nexport const process = function (this: IExceptionManager) {\n    for (const a of this.assertors) {\n        if (a.isTrue) continue\n        this.errors.push(a.message)\n    }\n}\n\nexport const ExceptionManager = function (this: IExceptionManager, ...assertions: IAssertor[]) {\n    this.assertors = assertions ?? []\n    this.errors = []\n    this.accept = accept\n    this.process = process\n    this.toString = toString\n    this.hasErrors = hasErrors\n} as any as IExceptionManager\n","import { IFormular } from '@core/formular-engine/formular-base/formular-base.types'\nimport { eventSignature } from '@core/framework/events/event-signature'\nimport { EventsType, IEvents } from '@core/framework/events/events.types'\nimport { newEvent } from '@core/framework/events/new-event'\nimport { IExtendedInputBase, IInputBase } from '@core/input-engine/core/input-base/input-base.types'\nimport { logManager } from '@core/managers/log-manager'\nimport {\n    INotification,\n    TNotificationMethod,\n    TNotificationMethodAsnyc\n} from '../notification-manager.types'\n\nexport const newNotificationVisitor = <T>(\n    event: IEvents,\n    method: TNotificationMethod<T> | TNotificationMethodAsnyc<T>\n): INotification => {\n    return { event, method }\n}\n\nexport const notification = <\n    T extends CallableFunction | IExtendedInputBase | IInputBase | IFormular<any> | object,\n    TEvt extends IEvents\n>(\n    owner: T,\n    eventHandler: eventSignature<TEvt>,\n    eventType: EventsType,\n    action: string,\n    target: string\n) => {\n    if (target === undefined) {\n        // console.warn('target is undefined')\n    }\n\n    let name = ''\n\n    if ('dependencyName' in owner) {\n        name =\n            owner?.dependencyName === 'InputBase'\n                ? (owner as IInputBase)?.name\n                : (owner as IExtendedInputBase).input?.name\n    } else if ('name' in owner) {\n        name = owner?.name\n    } else if ('label' in owner) {\n        name = owner?.label as unknown as string\n    } else {\n        logManager(undefined, 'warning', target, 'Notification object has no name!')\n        name = 'unknown-object'\n    }\n\n    return newNotificationVisitor(\n        newEvent(name, eventHandler.name, eventType, action, target),\n        eventHandler.bind(owner)\n    )\n}\n","/**\n * Provides types and a generic initializer function for input fields in the input engine.\n *\n * This module exports:\n * - `abstractInitializerSignatureType`: A generic type signature for an async initializer function.\n * - `abstractInitializer`: A generic function that initializes an input field, optionally runs a setup callback, and processes notifications.\n *\n * Usage:\n *   Use `abstractInitializer` to initialize any object implementing `IInputBase`, optionally running a setup routine and sending notifications.\n *\n * Example:\n *   await abstractInitializer(field, setupFn, [notification1, notification2]);\n */\n\nimport { INotification } from '@core/managers/notification-manager/notification-manager.types'\nimport { IInputBase } from '../input-base/input-base.types'\n\n/**\n * Type signature for a generic asynchronous initializer function for input fields.\n *\n * @template TInput - The type of the input field, extending IInputBase.\n * @param fieldInput - The input field instance to initialize.\n * @param setup - Optional setup callback to further configure the input field.\n * @param notifiers - Optional array of notifications to send to the input's notification manager.\n * @returns Promise<boolean> - Resolves to true if initialization succeeds, rejects if an error occurs.\n */\nexport type abstractInitializerSignatureType = <TInput extends IInputBase>(\n    fieldInput: TInput,\n    setup?: (fieldInput: TInput) => void,\n    notifiers?: INotification[]\n) => Promise<boolean>\n\n/**\n * Generic initializer for input fields.\n *\n * Initializes the given input field, optionally runs a setup callback, and processes an array of notifications.\n *\n * @template TFieldInput - The type of the input field, extending IInputBase.\n * @param fieldInput - The input field instance to initialize.\n * @param setup - Optional setup callback to further configure the input field.\n * @param notifiers - Optional array of notifications to send to the input's notification manager.\n * @returns Promise<boolean> - Resolves to true if initialization succeeds, rejects if an error occurs.\n */\nexport const abstractInitializer: abstractInitializerSignatureType = <\n    TFieldInput extends IInputBase\n>(\n    fieldInput: TFieldInput,\n    setup?: (fieldInput: TFieldInput) => void,\n    notifiers?: INotification[]\n) => {\n    try {\n        setup?.(fieldInput)\n\n        if (notifiers) {\n            for (const n of notifiers) {\n                fieldInput.notificationManager?.accept(n)\n            }\n        }\n        return Promise.resolve(true)\n    } catch (e: any) {\n        return Promise.reject(e instanceof Error ? e : new Error(String(e)))\n    }\n}\n","import { ExceptionManager } from '@core/framework/exceptions/exception-manager'\n\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { notification } from '@core/managers/notification-manager/utils/new-notification-visitor'\nimport { abstractInitializer } from '../../abstract/abstract-initializer'\nimport { IInputBase } from '../input-base.types'\n\nexport const initialize = async function (this: IInputBase) {\n    try {\n        const success = await abstractInitializer(\n            this,\n            (e) => {\n                // e?.notificationManager?.observers.subscribe(this.setInputBusy.bind(this))\n            },\n            [\n                notification(this, this.handleValidation, 'onValidate', 'onValidate', this.name),\n                notification(this, this.handleOnBlur, 'onBlur', 'onBlur', this.name),\n                notification(this, this.handleOnFocus, 'onFocus', 'onFocus', this.name),\n                notification(this, this.handleOnKeyPress, 'onKeyPress', 'onKeyPress', this.name),\n                notification(this, this.handleOnKeyUp, 'onKeyUp', 'onKeyUp', this.name),\n                notification(this, this.handleOnClear, 'onClear', 'onClear', this.name)\n            ]\n        )\n\n        if (success) {\n            const em = new ExceptionManager(\n                ...[\n                    // newAssert(\n                    //     this.field.isInitialized,\n                    //     `The dependency field is not properly initialized`\n                    // ),\n                    // newAssert(\n                    //     this.field.styler.isInitialized,\n                    //     `The dependency field.styler is not properly initialized`\n                    // ),\n                    // newAssert(\n                    //     params.descriptor?.options?.length > 0,\n                    //     `None options were provided. this feature will not work properly`\n                    // )\n                ]\n            )\n\n            em.process()\n            if (em.hasErrors()) {\n                logManager(undefined, 'critical', 'initialize', em.toString())\n            } else {\n                this.isInitialized = true\n            }\n        }\n    } catch (e: any) {\n        logManager(this.trackingManager, 'critical', this.dependencyName, e)\n    }\n}\n","import { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\nimport { IInputBase } from '../input-base.types'\n\nexport const initializeProperties = function (this: IInputBase, descriptor: IFieldDescriptor) {\n    this.id = descriptor.id\n    this.name = descriptor.name\n    this.label = descriptor.label\n    this.value = descriptor.value ?? descriptor.defaultValue\n    this.originalValue = descriptor.value ?? descriptor.defaultValue\n    this.defaultValue = descriptor.defaultValue\n    this.objectValue = descriptor.objectValue\n    this.type = descriptor.type\n    this.target = descriptor.target\n    this.isValid = descriptor.isValid ?? true\n    this.isDirty = descriptor.isDirty ?? false\n    this.isPristine = descriptor.isPristine ?? true\n    this.isFocus = descriptor.isFocus ?? false\n    this.expectedValue = descriptor.expectedValue\n    this.loaded = descriptor.loaded ?? false\n    this.changed = descriptor.changed ?? false\n\n    // Bridge descriptor.validationOptions → input.validationOptions\n    // Without this the validation strategies never see minLength/maxLength/pattern/required.\n    if (descriptor.validationOptions && Object.keys(descriptor.validationOptions).length > 0) {\n        this.validationOptions = descriptor.validationOptions\n    }\n\n    // Apply field-specific debounce delay if provided\n    // These will be set again in the constructor, but we need to set them here\n    // to ensure they're not overwritten by global config\n    if (descriptor.debounceDelay !== undefined) {\n        this.inputDelay = descriptor.debounceDelay\n        this.onValidateDelay = descriptor.debounceDelay\n        this.onUiUpdateDelay = descriptor.debounceDelay\n        this.observablesDelay = descriptor.debounceDelay\n    }\n}\n","import { logManager } from '@core/managers/log-manager/log-manager'\nimport { TrackingType } from '@core/managers/tracking-manager/tracker-manager.types'\nimport { IInput } from '../input-base.types'\nexport const message = function (\n    this: IInput,\n    type: TrackingType,\n    source: string,\n    message: string\n) {\n    logManager(this.trackingManager, type, source, message)\n}\n","import { newEvent } from '@core/framework/events/new-event'\n\nimport { IExtendedInput, IInput, IInputBase } from '../input-base.types'\n\nexport const refreshUi = function (this: IInput, ref?: IInputBase | IExtendedInput) {\n    ref?.input?.notificationManager?.debounceNotify(\n        'onUiUpdate',\n        ref?.input.onUiUpdateDelay,\n        newEvent(ref?.input?.name, refreshUi.name, 'onUiUpdate', `field`, ref?.input?.name, ref),\n        String(ref?.input?.id)\n    )\n}\n","import { IInput } from '../input-base.types'\n\n/**\n * Sets the focus state for the field input.\n *\n * This method checks if the internal HTML element reference is disabled.\n * If it is not disabled, it updates the `isFocus` property to `true`,\n * applies the focus state style to the field, and sets focus on the\n * internal HTML element.\n *\n * @this IInput - The context of the field input instance.\n */\nexport const setFocus = function (this: IInput) {\n    const element = this.domManager?.dmGet(this.id.toString())\n    if (!element || element.disabled) return\n    this.isFocus = true\n    this.styleManager?.update('focus', this.isFocus)\n    this.domManager?.dmSetFocus(this.id.toString())\n}\n","import { IInput } from '../input-base.types'\n\nexport const setInputBusy = function (this: IInput, isBusy: boolean) {\n    if (this.isBusy !== isBusy) {\n        this.isBusy = isBusy\n        this.styleManager?.update('busy', this.isBusy)\n    }\n}\n","/**\n * FORMULAR - Input Base Engine\n * Copyright (c) 2025 Piana Tadeo\n * Licensed under MIT License\n *\n * Core input field implementation with reactive state and validation\n */\n\nimport { newEvent } from '@core/framework/events/new-event'\nimport { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\nimport { ICulture } from '@core/managers'\nimport {\n    IConfigurationManager,\n    SConfigurationManager\n} from '@core/managers/configuration-manager/interfaces/i-configuration-manager'\nimport { IDomManager } from '@core/managers/dom-manager/dom-manager.types'\nimport { INotificationManager } from '@core/managers/notification-manager/notification-manager-base.types'\nimport { IStyleManager } from '@core/managers/style-manager/style-manager.types'\nimport { ITrackingManager } from '@core/managers/tracking-manager/tracker-manager.types'\nimport { IValidationManager } from '@core/managers/validation-manager/validation-manager.types'\nimport { IValueManager } from '@core/managers/value-manager/value-manager.types'\nimport { IServiceManager } from '@core/types'\n\nimport { useDomManager } from './dependencies/use-dom-manager'\nimport { useNotificationManager } from './dependencies/use-notification-manager'\nimport { useStyleManager } from './dependencies/use-style-manager'\nimport { useTrackingManager } from './dependencies/use-tracking-manager'\nimport { useValidationManager } from './dependencies/use-validation-manager'\nimport { useValueManager } from './dependencies/use-value-manager'\nimport { IInputBase } from './input-base.types'\nimport { checkInitialized } from './prototype/check-initialized'\nimport { clear } from './prototype/clear'\nimport { enable } from './prototype/enable'\nimport { focus } from './prototype/focus'\nimport { handleOnBlur } from './prototype/handle-on-blur'\nimport { handleOnClear } from './prototype/handle-on-clear'\nimport { handleOnFocus } from './prototype/handle-on-focus'\nimport { handleOnKeyPress } from './prototype/handle-on-key-press'\nimport { handleOnKeyUp } from './prototype/handle-on-key-up'\nimport { handleValidation } from './prototype/handle-validation'\nimport { handleValidationAsync } from './prototype/handle-validation-async'\nimport { hasChanges } from './prototype/has-changes'\nimport { initialize } from './prototype/intialize'\nimport { initializeProperties } from './prototype/intialize-properties'\nimport { message } from './prototype/message'\nimport { refreshUi } from './prototype/refresh-ui'\nimport { setFocus } from './prototype/set-focus'\nimport { setInputBusy } from './prototype/set-input-busy'\n\nexport const InputBase = function (\n    this: IInputBase,\n    serviceManager: IServiceManager,\n    descriptor: IFieldDescriptor | null,\n    domManagerInstance: IDomManager<HTMLInputElement> | null,\n    notifierInstance: INotificationManager | null,\n    trackerInstance: ITrackingManager | null,\n    validationManagerInstance: IValidationManager | null,\n    valueManagerInstance: IValueManager | null,\n    styleManager: IStyleManager | null\n) {\n    if (descriptor !== null) this.initializeProperties(descriptor)\n    if (domManagerInstance !== null) this.useDomManager(domManagerInstance)\n    if (notifierInstance !== null) this.useNotificationManager(notifierInstance)\n    if (trackerInstance !== null) this.useTrackingManager(trackerInstance)\n    if (validationManagerInstance !== null) this.useValidationManager(validationManagerInstance)\n    if (valueManagerInstance !== null) this.useValueManager(valueManagerInstance)\n    if (styleManager !== null) this.useStyleManager(styleManager)\n\n    this.isInitialized = false\n    this.serviceManager = serviceManager\n    Object.defineProperty(this, 'dependencyName', {\n        value: InputBase.name && InputBase.name.length > 0 ? InputBase.name : 'InputBase',\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n\n    const config = this.serviceManager?.lazy<IConfigurationManager>(SConfigurationManager)?.()\n\n    const resolveDelay = (value: any, fallback: number) => {\n        if (typeof value === 'number') return value\n        if (value && typeof value === 'object') {\n            if (typeof value.triggerDelay === 'number') return value.triggerDelay\n            if (typeof value.delay === 'number') return value.delay\n        }\n        return fallback\n    }\n\n    // Use field-level debounce if specified, otherwise fall back to global config\n    const onChangeConfig = config?.getConfigByName<any>('behavior', 'events', 'onChange')\n    const globalInputDelay = resolveDelay(onChangeConfig, 100)\n    // Only set if not already set by initializeProperties\n    if (this.inputDelay === undefined) {\n        this.inputDelay = descriptor?.debounceDelay ?? globalInputDelay\n    }\n\n    const onValidateConfig = config?.getConfigByName<any>('behavior', 'events', 'onValidate')\n    const globalOnValidateDelay = resolveDelay(onValidateConfig, 100)\n    // Only set if not already set by initializeProperties\n    if (this.onValidateDelay === undefined) {\n        this.onValidateDelay = descriptor?.debounceDelay ?? globalOnValidateDelay\n    }\n\n    const onUiUpdateConfig = config?.getConfigByName<any>('behavior', 'events', 'onUiUpdate')\n    const globalOnUiUpdateDelay = resolveDelay(onUiUpdateConfig, 100)\n    // Only set if not already set by initializeProperties\n    if (this.onUiUpdateDelay === undefined) {\n        this.onUiUpdateDelay = descriptor?.debounceDelay ?? globalOnUiUpdateDelay\n    }\n\n    // Use UI update delay as default debounce delay for observer notifications\n    if (this.observablesDelay === undefined) {\n        this.observablesDelay = this.onUiUpdateDelay ?? this.inputDelay ?? 100\n    }\n\n    this.labelId = this.domManager?.labelId ?? '-label'\n    this.describedById = this.domManager?.describedById ?? '-described-by'\n\n    const onClickConfig = config?.getConfigByName<any>('behavior', 'events', 'onClick')\n    this.onClickDelay = resolveDelay(onClickConfig, 100)\n    this.culture =\n        config?.getConfigByName<ICulture>('cultures', 'defaultCulture') ?? ({} as ICulture)\n\n    this.validationResults = []\n\n    // Helper to notify changes\n    const notifyChange = (eventType: 'onValidate' | 'onUiUpdate') => {\n        if (this.notificationManager?.debounceNotify === undefined) {\n            return\n        }\n        this.notificationManager?.debounceNotify?.(\n            eventType,\n            this.inputDelay,\n            newEvent?.(\n                this.name,\n                setInputBusy.name,\n                eventType,\n                `field.${setInputBusy.name}.isFocus`,\n                this.name\n            ),\n            String(this.id) // Pass field ID as channel\n        )\n    }\n\n    // Make 'value' observable and notify on change\n    let _value = typeof this.value !== 'undefined' ? this.value : null\n    Object.defineProperty(this, 'value', {\n        get() {\n            return _value\n        },\n        set(newValue) {\n            if (_value !== newValue) {\n                _value = newValue\n                const triggers =\n                    this.validationManager?.triggerKeyWordType?.map((k: string) =>\n                        k.toLowerCase()\n                    ) ?? []\n                if (triggers.includes('onchange')) {\n                    notifyChange('onValidate')\n                }\n                notifyChange('onUiUpdate')\n            }\n        },\n        configurable: true,\n        enumerable: true\n    })\n\n    let _focus = typeof this.isFocus !== 'undefined' ? this.isFocus : false\n    Object.defineProperty(this, 'isFocus', {\n        get() {\n            return _focus\n        },\n        set(newValue: boolean) {\n            if (_focus !== newValue) {\n                _focus = newValue\n                const triggers =\n                    this.validationManager?.triggerKeyWordType?.map((k: string) =>\n                        k.toLowerCase()\n                    ) ?? []\n                if (triggers.includes('onchange')) {\n                    notifyChange('onValidate')\n                }\n                notifyChange('onUiUpdate')\n            }\n        }\n    })\n} as any as IInputBase\n\nObject.assign(InputBase.prototype, {\n    useNotificationManager,\n    handleValidationAsync,\n    useValidationManager,\n    initializeProperties,\n    useTrackingManager,\n    checkInitialized,\n    handleValidation,\n    handleOnKeyPress,\n    handleOnKeyUp,\n    useValueManager,\n    useStyleManager,\n    useDomManager,\n    handleOnFocus,\n    setInputBusy,\n    handleOnClear,\n    handleOnBlur,\n    initialize,\n    hasChanges,\n    refreshUi,\n    setFocus,\n    message,\n    enable,\n    clear,\n    focus\n})\n","import { IFormular } from '@core/formular-engine/formular-base/formular-base.types'\nimport { InputDataTypes } from '@core/framework/common/common.input.data.types'\nimport { IEvents } from '@core/framework/events/events.types'\nimport { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\nimport { IEntityScheme } from '@core/framework/schema/field-schema/field-schema-types'\nimport { ICheckBoxBaseInputProperties } from '@core/input-engine/variants/check-box-base/check-box-base-input.types'\nimport { IClickBaseInputProperties } from '@core/input-engine/variants/click-base/click-base-input.types'\nimport {\n    IDrawerBaseInput,\n    IDrawerBaseInputProperties\n} from '@core/input-engine/variants/drawer-base/drawer-base-input.types'\nimport {\n    IOptionBaseInput,\n    IOptionBaseInputProperties\n} from '@core/input-engine/variants/option-based/option-base-input.types'\nimport { IRadioBaseInputProperties } from '@core/input-engine/variants/radio-base/radio-base-input.types'\nimport { ISelectBaseInputProperties } from '@core/input-engine/variants/select-base/select-base-input.types'\nimport { ITextBaseInput } from '@core/input-engine/variants/text-base/text-base-input.types'\nimport { ICulture } from '@core/managers'\nimport { IDomManager } from '@core/managers/dom-manager/dom-manager.types'\nimport { IInitializableDependency } from '@core/managers/initialization-manager/initialization-manager.types'\nimport { INotificationManager } from '@core/managers/notification-manager/notification-manager-base.types'\nimport {\n    IFieldStyleProperties,\n    IStyleManager\n} from '@core/managers/style-manager/style-manager.types'\nimport {\n    ITrackingManager,\n    TrackingType\n} from '@core/managers/tracking-manager/tracker-manager.types'\nimport {\n    IValidationManager,\n    IValidationResult\n} from '@core/managers/validation-manager/validation-manager.types'\nimport {\n    IValueManager,\n    IValueManagerProperties\n} from '@core/managers/value-manager/value-manager.types'\nimport { IServiceManager } from '@core/types'\n\nimport { IInitilizationCheckResult } from './prototype/check-initialized'\n\nexport const SInputBase = Symbol.for('IInputBase')\n\n/** This will probably need to be refactored as soon as I have the proof thats the configuration approach is correct */\nexport interface IServiceInjectableProperties {\n    serviceManager: IServiceManager\n    // Configured Delays\n    inputDelay: number\n    onValidateDelay: number\n    onUiUpdateDelay: number\n    observablesDelay: number\n    // Configured Suffixes\n    labelId: string\n    describedById: string\n    // Configured Date\n    culture: ICulture\n\n    onClickDelay: number\n    onChangeDelay: number\n}\n\n/**\n * Should be the root base of a field's properties\n */\nexport interface IInputProperties extends IFieldDescriptor, IServiceInjectableProperties {\n    [key: string]: any\n    id: number\n    name: string\n    label: string\n\n    enabled: boolean\n\n    isBusy: boolean\n\n    isValid: boolean\n    isDirty: boolean\n    isPristine: boolean\n    isFocus: boolean\n    formular?: IFormular<any>\n    value: InputDataTypes\n    originalValue: InputDataTypes\n    validationResults: IValidationResult[]\n\n    // Manages the cursor position for masked inputs.\n    cursorPosition: number | null\n    /** message helper method : uses treacker and fallbacks to console */\n    message: (type: TrackingType, source: string, message: string) => void\n    /** Core methods */\n    setValue: (value: InputDataTypes) => void\n    getValue: () => InputDataTypes\n\n    setFocus: () => void\n    clear: () => void\n    enable: (enabled: boolean) => void\n\n    hasChanges: (callback: () => void) => void\n\n    handleValidation: <T extends IEvents | unknown>(data: T) => void\n    handleValidationAsync: <T extends IEvents | unknown>(data: T) => Promise<IValidationResult[]>\n    handleOnBlur: <T extends IEvents>(data?: T) => void\n    handleOnFocus: <T extends IEvents>(data?: T) => void\n    handleOnClear: <T extends IEvents>(data?: T) => void\n    handleOnKeyPress: <T extends IEvents>(data?: T) => void\n    handleOnKeyUp: <T extends IEvents>(data?: T) => void\n    refreshUi: (ref?: IInputBase | IExtendedInput) => void\n    onBeforeValidation?: () => boolean\n    onAfterValidation?: () => void\n    setInputBusy: (isBusy: boolean) => void\n\n    /** Dependency accessors */\n    domManager: IDomManager<HTMLInputElement>\n    drawer: IDrawerBaseInput\n    styleManager: IStyleManager\n    notificationManager: INotificationManager\n    trackingManager: ITrackingManager\n    validationManager: IValidationManager\n    valueManager: IValueManager\n}\n\nexport type SchemeToDescriptorConverterType = (scheme: IEntityScheme) => IFieldDescriptor\n\n/** @warning: should not being used outside it's main implementation prefer the use of @Ifield */\nexport type IInput = IInputBase & Omit<IFieldDescriptor, 'validationOptions' | 'options'>\n\nexport interface IInputBase extends IInputProperties, IInitializableDependency {\n    new (\n        serviceManager: IServiceManager,\n        descriptor: IFieldDescriptor | null,\n        domManagerInstance: IDomManager<HTMLInputElement> | null,\n        notifierInstance: INotificationManager | null,\n        trackerInstance: ITrackingManager | null,\n        validationManagerInstance: IValidationManager | null,\n        valueManagerInstance: IValueManager | null,\n        drawerBase: IDrawerBaseInput | null,\n        styleManager: IStyleManager | null\n    ): IInputBase\n\n    /** initializer builders */\n    initializeProperties: (descriptor: IFieldDescriptor) => void\n    checkInitialized: () => IInitilizationCheckResult\n    useDomManager: (domManagerInstance: IDomManager<HTMLInputElement>) => IInputBase\n    useNotificationManager: (notifierInstance?: INotificationManager) => IInputBase\n    useTrackingManager: (trackerInstance: ITrackingManager) => IInputBase\n    useValidationManager: (validationStrategyInstance: IValidationManager | null) => IInputBase\n    useValueManager: (valueStrategyInstance: IValueManager | null) => IInputBase\n    useStyleManager: (styleManager: IStyleManager | null) => IInputBase\n}\n\nexport const InputResolver = (field: IExtendedInput | IInputBase): IInputBase => {\n    if (field.dependencyName === 'InputBase') {\n        return field as IInputBase\n    } else {\n        return field.input as IInputBase\n    }\n}\n\nexport interface IExtendedInputBase extends IInitializableDependency {\n    input: IInputBase\n}\n\nexport interface IExtendedInput\n    extends\n        IFieldStyleProperties,\n        IOptionBaseInputProperties,\n        IDrawerBaseInputProperties,\n        IClickBaseInputProperties,\n        ICheckBoxBaseInputProperties,\n        IRadioBaseInputProperties,\n        ISelectBaseInputProperties,\n        IValueManagerProperties,\n        IOptionBaseInput,\n        ITextBaseInput,\n        IExtendedInputBase,\n        IInitializableDependency {\n    handleOnClear: any\n    value?: any\n    label?: string\n    required?: boolean\n    errors?: any[]\n    guides?: any[]\n    // getOptionByValue: (value: string) => IOptionItem | null\n    // tryGetOptionByIdOrValue: (id: string, value: string) => IOptionItem | null\n    // handleOnChanged: <T extends IEvents>(data?: T) => void\n    // handleOnClick: <T extends IEvents>(data?: T) => void\n    // getOptionById: (id: string) => IOptionItem | null\n}\n","import { abstractInitializer } from '@core/input-engine/core/abstract/abstract-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { ICheckBoxBaseInput } from '../check-box-base-input.types'\n\n/**\n * The setup function sets up the field input by subscribing to observers.\n * basic configuration for styles and validation\n */\nexport const initialize = async function (this: ICheckBoxBaseInput) {\n    try {\n        const success = await abstractInitializer(\n            this.input,\n            (e) => {\n                logManager(undefined, 'info', 'initialize', e.name)\n                this.checked = false\n            },\n            []\n        )\n\n        if (success) {\n            this.isInitialized = true\n        }\n    } catch (e: any) {\n        logManager(this.input.trackingManager, 'critical', this.dependencyName, e)\n    }\n}\n","import { IOptionItem } from '@core/framework/schema/option-schema/options.scheme.types'\nimport { IExtendedInput, IInputBase } from '../input-base/input-base.types'\n\nexport const referencer = function (context: IInputBase, ref: HTMLInputElement | null) {\n    context.domManager?.dmRegister(ref)\n}\n\nexport const optionReferencer = function (context: IExtendedInput, ref: HTMLInputElement | null) {\n    if (!ref) return null\n    /** Okay this following check after investigating is useless\n     * I will keep it anyways because for me\n     * it makes the code more readable and understandable\n     * but it's does nothing at all since refs comes not null and only once\n     *\n     * I guessing that maybe a day if the render is dubbled\n     * by the StrictMode of something else like that\n     * we expect to have only one ref and it could avoid bugs\n     */\n    context.input.domManager?.dmRegister(ref)\n    if (context.optionBase.optionsInitialized) return\n    if (context.optionBase.checkOptionsInitialized()) {\n        context.input.valueManager?.setValue(\n            context as unknown as IExtendedInput,\n            context.input.defaultValue as IOptionItem | string | number | null\n        )\n        context.optionBase.optionsInitialized = true\n    }\n\n    // const existingRef = this.get(ref.id)\n    // return existingRef\n\n    // console.log('refOption', this.internalHTMLElementRefs)\n}\n","import { referencer } from '@core/input-engine/core/referencers/referencer'\nimport { ICheckBoxBaseInput } from '../check-box-base-input.types'\n\nexport const ref = function (this: ICheckBoxBaseInput, ref: HTMLInputElement | null) {\n    referencer(this.input, ref)\n}\n","import {\n    EventTypeSignature,\n    IDomRegisterBuilder,\n    KeyEventTypeSignature\n} from '../dom-registers-builder.type'\n\n/**\n * Assembles all registered event handlers into a merged handler object.\n * @param this DomRegisterBuilder instance\n * @returns Object with merged event handlers\n */\nexport const assembleEventsHandlers = function (this: IDomRegisterBuilder) {\n    const mergedHandlers: Partial<any> = {}\n\n    for (const [eventType, handlers] of Object.entries(this.eventsHandlers)) {\n        mergedHandlers[eventType] = (e: Event) => {\n            handlers.forEach((handler) => {\n                if (eventType === 'onKeyPress') {\n                    ;(handler as KeyEventTypeSignature)(e as KeyboardEvent)\n                } else {\n                    ;(handler as EventTypeSignature)(e)\n                }\n            })\n        }\n    }\n\n    return mergedHandlers\n}\n","import { IMaskedBaseInput } from '@core/input-engine/variants/masked-base/masked-base-input.types'\nimport { IDomRegisterBuilder } from '../dom-registers-builder.type'\n\n/**\n * Builds the main input element configuration.\n * @param this DomRegisterBuilder instance\n * @returns The element configuration object\n */\nexport const build = function (this: IDomRegisterBuilder): any {\n    let hasMask = false\n    if (this.context.dependencyName === 'MaskedBaseInput') {\n        hasMask = !!(this.context as unknown as IMaskedBaseInput)?.mask\n    }\n    const eleEvts = this.assembleEventsHandlers()\n\n    // Build ARIA attributes object\n    const ariaAttrs: Record<string, string> = {}\n    if (this.arias && this.arias.length > 0) {\n        for (const aria of this.arias) {\n            ariaAttrs[`aria-${aria.name}`] = aria.value\n        }\n    }\n\n    return {\n        id: `${this.context.input.id}`,\n        /** I need hack date input */\n        type: hasMask ? 'text' : this.context.input.type,\n        className: 'base-input',\n        title: this.context.input.label ?? '',\n        ...ariaAttrs,\n        ...eleEvts\n    }\n}\n","import { IOptionItem } from '@core/framework/schema/option-schema/options.scheme.types'\nimport { IDomRegisterBuilder } from '../dom-registers-builder.type'\n\n/**\n * Builds the label element configuration.\n * @param this DomRegisterBuilder instance\n * @param option The option item\n * @returns The label element configuration object\n */\nexport const buildLabel = function (this: IDomRegisterBuilder, option: IOptionItem): any {\n    const eleEvts = this.assembleEventsHandlers()\n    return {\n        id: `label-${option.id}`,\n        type: 'label',\n        title: option.text ?? '',\n        ...eleEvts\n    }\n}\n","import { IOptionItem } from '@core/framework/schema/option-schema/options.scheme.types'\nimport { IDomRegisterBuilder } from '../dom-registers-builder.type'\n\n/**\n * Builds the option element configuration.\n * @param this DomRegisterBuilder instance\n * @param option The option item\n * @returns The option element configuration object\n */\nexport const buildOption = function (this: IDomRegisterBuilder, option: IOptionItem): any {\n    const eleEvts = this.assembleEventsHandlers()\n    return {\n        id: `option-${option.id}`,\n        type: this.context.input.type,\n        title: option.text ?? '',\n        ...eleEvts\n    }\n}\n","import { IAria } from '@core/managers/dom-manager/dom-manager.types'\nimport { IDomRegisterBuilder } from '../dom-registers-builder.type'\n\n/**\n * Registers ARIA attributes to be included in the element build.\n * @param this DomRegisterBuilder instance\n * @param arias List of ARIA attributes\n * @returns The builder instance\n */\nexport const registerAria = function (this: IDomRegisterBuilder, ...arias: IAria[]) {\n    // Store ARIA attributes in the element object to be returned by build()\n    if (!this.arias) {\n        this.arias = []\n    }\n    this.arias.push(...(arias ?? []))\n    return this\n}\n","import { IExtendedInput } from '../input-base.types'\nimport { onBlurHandle } from './on-blur-handle'\n\nexport const onBlur = (f: IExtendedInput, e: Event) => {\n    const inputElement = e.target as HTMLInputElement\n    f.input.isFocus = false\n    f.input.styleManager?.update('focus', f.input.isFocus)\n    f.input.cursorPosition = null\n    // Connect DOM blur event to the notification chain so onBlurHandle\n    // can fire onValidate → handleValidation → onUiUpdate → Pulsar observers\n    onBlurHandle(f)\n    e.stopPropagation()\n}\n","import { onBlur } from '../../input-base/events/on-blur'\nimport { IDomRegisterBuilder } from '../dom-registers-builder.type'\n\n/**\n * Registers the onBlur event handler and an optional custom handler.\n * @param this DomRegisterBuilder instance\n * @param custom Optional custom handler\n * @returns The builder instance\n */\nexport const registerBlur = function (this: IDomRegisterBuilder, custom?: (e: Event) => void) {\n    custom && this.registerEvent('onBlur', (e: Event) => custom(e))\n    onBlur && this.registerEvent('onBlur', (e: Event) => onBlur(this.context, e))\n    return this\n}\n","import { newEvent } from '@core/framework/events/new-event'\n\nimport { IExtendedInput } from '../input-base.types'\n\nexport const onChangedHandle = (f: IExtendedInput) => {\n    if (!f.input.validationManager?.triggerKeyWordType.includes('onChange')) {\n        return\n    }\n\n    f.input.notificationManager?.debounceNotify(\n        'onValidate',\n        f.input.onValidateDelay,\n        newEvent(\n            f.input.name,\n            onChangedHandle.name,\n            'onValidate',\n            onChangedHandle.name,\n            f.input.name,\n            f\n        ),\n        String(f.input.id) // Pass field ID as channel\n    )\n}\n","import { IExtendedInput } from '../input-base.types'\nimport { onChangedHandle } from './on-changed-handle'\n\nexport const onChange = (f: IExtendedInput, e: Event) => {\n    const inputElement = e.target as HTMLInputElement\n\n    f.input.valueManager.setValueFromHtmlElement(f, inputElement)\n\n    f.input.cursorPosition = inputElement.selectionStart ?? 0\n\n    // Call the handle function to trigger validation\n    onChangedHandle(f)\n\n    e.stopPropagation()\n}\n","import { onChange } from '../../input-base/events/on-changed'\nimport { IDomRegisterBuilder } from '../dom-registers-builder.type'\n\n/**\n * Registers the onChange event handler and an optional custom handler.\n * @param this DomRegisterBuilder instance\n * @param custom Optional custom handler\n * @returns The builder instance\n */\nexport const registerChange = function (this: IDomRegisterBuilder, custom?: (e: Event) => void) {\n    custom && this.registerEvent('onChange', (e: Event) => custom(e))\n    if (onChange) {\n        this.registerEvent('onChange', (e: Event) => {\n            onChange(this.context, e)\n        })\n    }\n    return this\n}\n","import { newEvent } from '@core/framework/events/new-event'\nimport { IExtendedInput } from '../../../core/input-base/input-base.types'\n\nexport const onClick = (f: IExtendedInput, e: Event) => {\n    const inputElement = e.target as HTMLInputElement\n\n    f.input.valueManager.setValueFromHtmlElement(f, inputElement)\n\n    f.input.notificationManager?.debounceNotify(\n        'onClick',\n        f.input.onUiUpdateDelay,\n        newEvent(f.input.name, onClick.name, 'onClick', `field.${onClick.name}`, f.input.name, f),\n        String(f.input.id)\n    )\n\n    e.stopPropagation()\n}\n","import { onClick } from '../../../variants/click-base/events/on-click'\nimport { IDomRegisterBuilder } from '../dom-registers-builder.type'\n\n/**\n * Registers the onClick event handler and an optional custom handler.\n * @param this DomRegisterBuilder instance\n * @param custom Optional custom handler\n * @returns The builder instance\n */\nexport const registerClick = function (this: IDomRegisterBuilder, custom?: (e: Event) => void) {\n    custom && this.registerEvent('onClick', (e: Event) => custom(e))\n    onClick && this.registerEvent('onClick', (e: Event) => onClick(this.context, e))\n    return this\n}\n","import { newEvent } from '@core/framework/events/new-event'\nimport { IExtendedInput } from '../../../core/input-base/input-base.types'\n\nexport const onClickOption = <T extends IExtendedInput>(f: T, optionId: string, e: Event) => {\n    f.input.valueManager.setValue(f, optionId)\n\n    f.input?.notificationManager?.debounceNotify(\n        'onClick',\n        f.input.onClickDelay,\n        newEvent(\n            f.input.name,\n            onClickOption.name,\n            'onClick',\n            `field.option.label.${onClickOption.name}`,\n            f.input.name,\n            f\n        ),\n        String(f.input.id)\n    )\n\n    e.stopPropagation()\n    // e.preventDefault()\n}\n","import { onClickOption } from '@core/input-engine/variants/click-base/events/on-click-option'\nimport { IDomRegisterBuilder } from '../dom-registers-builder.type'\n\n/**\n * Registers the onClickOption event handler for a specific option.\n * @param this DomRegisterBuilder instance\n * @param optionId The option id\n * @returns The builder instance\n */\nexport const registerClickOption = function (this: IDomRegisterBuilder, optionId: string) {\n    this.onClickOption = (e: Event) => onClickOption(this.context, optionId, e)\n    return this\n}\n","import { EventsType } from '@core/framework/events/events.types'\nimport { Events, IDomRegisterBuilder } from '../dom-registers-builder.type'\n\n/**\n * Registers a single event handler for a given event type.\n * @param this DomRegisterBuilder instance\n * @param eventType The type of event\n * @param handler The event handler function\n * @returns The builder instance\n */\nexport const registerEvent = function (\n    this: IDomRegisterBuilder,\n    eventType: EventsType,\n    handler?: Events\n) {\n    const key = eventType as keyof typeof this.eventsHandlers\n    this.eventsHandlers[key] ??= []\n    if (handler) {\n        this.eventsHandlers[key].push(handler)\n    }\n    return this\n}\n","import { ICustomHandler, IDomRegisterBuilder } from '../dom-registers-builder.type'\n\n/**\n * Registers multiple custom event handlers to the builder.\n * @param this DomRegisterBuilder instance\n * @param customHandlers List of custom event handlers\n * @returns The builder instance\n */\nexport const registerEvents = function (\n    this: IDomRegisterBuilder,\n    ...customHandlers: ICustomHandler[]\n) {\n    customHandlers.forEach((customHandler) => {\n        this.registerEvent(customHandler.eventType, customHandler.handler)\n    })\n    return this\n}\n","import { IExtendedInput } from '../input-base.types'\n\nexport const onFocus = (f: IExtendedInput, e: Event) => {\n    console.log('-----onFocus', f.input.name, f.input.id, e.target)\n    const inputElement = e.target as HTMLInputElement\n\n    f.input.isFocus = true\n    f.input.styleManager?.update('focus', f.input.isFocus)\n\n    if (f.input.cursorPosition && f.input.cursorPosition !== null) {\n        inputElement.setSelectionRange(f.input.cursorPosition, f.input.cursorPosition)\n    }\n\n    e.stopPropagation()\n    // e.preventDefault()\n}\n","import { onFocus } from '../../input-base/events/on-focus'\nimport { IDomRegisterBuilder } from '../dom-registers-builder.type'\n\n/**\n * Registers the onFocus event handler and an optional custom handler.\n * @param this DomRegisterBuilder instance\n * @param custom Optional custom handler\n * @returns The builder instance\n */\nexport const registerFocus = function (this: IDomRegisterBuilder, custom?: (e: Event) => void) {\n    custom && this.registerEvent('onFocus', (e: Event) => custom(e))\n    onFocus && this.registerEvent('onFocus', (e: Event) => onFocus(this.context, e))\n    return this\n}\n","import { IExtendedInput } from '../input-base.types'\n\nexport const onKeyPress = function (f: IExtendedInput, e: KeyboardEvent) {\n    const inputElement = e.target as HTMLInputElement\n    const key = e.key\n\n    if (f.input.cursorPosition && f.input.cursorPosition !== null) {\n        inputElement.setSelectionRange(f.input.cursorPosition, f.input.cursorPosition)\n    }\n\n    e.stopPropagation()\n}\n","import { onKeyPress } from '../../input-base/events/on-key-press'\nimport { IDomRegisterBuilder } from '../dom-registers-builder.type'\n\n/**\n * Registers the onKeyPress event handler and an optional custom handler.\n * @param this DomRegisterBuilder instance\n * @param custom Optional custom handler\n * @returns The builder instance\n */\nexport const registerKeyPress = function (\n    this: IDomRegisterBuilder,\n    custom?: (e: KeyboardEvent) => void\n) {\n    custom && this.registerEvent('onKeyPress', (e: KeyboardEvent) => custom(e))\n    onKeyPress &&\n        this.registerEvent('onKeyPress', (e: KeyboardEvent) => onKeyPress(this.context, e))\n    return this\n}\n","import { IExtendedInput } from '../input-base.types'\n\nexport const onKeyUp = function (f: IExtendedInput, e: KeyboardEvent) {\n    const inputElement = e.target as HTMLInputElement\n    const key = e.key\n\n    if (f.input.cursorPosition && f.input.cursorPosition !== null) {\n        inputElement.setSelectionRange(f.input.cursorPosition, f.input.cursorPosition)\n    }\n\n    e.stopPropagation()\n}\n","import { onKeyUp } from '../../input-base/events/on-key-up'\nimport { IDomRegisterBuilder } from '../dom-registers-builder.type'\n\n/**\n * Registers the onKeyUp event handler and an optional custom handler.\n * @param this DomRegisterBuilder instance\n * @param custom Optional custom handler\n * @returns The builder instance\n */\nexport const registerKeyUp = function (\n    this: IDomRegisterBuilder,\n    custom?: (e: KeyboardEvent) => void\n) {\n    custom && this.registerEvent('onKeyUp', (e: KeyboardEvent) => custom(e))\n    onKeyUp && this.registerEvent('onKeyUp', (e: KeyboardEvent) => onKeyUp(this.context, e))\n    return this\n}\n","import { EventsType } from '@core/framework/events/events.types'\nimport { IExtendedInput } from '../input-base/input-base.types'\n\nimport type { Events, ICustomHandler, IDomRegisterBuilder } from './dom-registers-builder.type'\nimport { assembleEventsHandlers } from './prototype/assemble-events-handlers'\nimport { build } from './prototype/build'\nimport { buildLabel } from './prototype/build-label'\nimport { buildOption } from './prototype/build-option'\nimport { registerAria } from './prototype/register-aria'\nimport { registerBlur } from './prototype/register-blur'\nimport { registerChange } from './prototype/register-change'\nimport { registerClick } from './prototype/register-click'\nimport { registerClickOption } from './prototype/register-click-option'\nimport { registerEvent } from './prototype/register-event'\nimport { registerEvents } from './prototype/register-events'\nimport { registerFocus } from './prototype/register-focus'\nimport { registerKeyPress } from './prototype/register-key-press'\nimport { registerKeyUp } from './prototype/register-key-up'\n\n/**\n * Creates a custom event handler object.\n * @param eventType The type of event\n * @param handler The event handler function\n * @returns ICustomHandler object\n * @throws {TypeError} If eventType or handler is not provided or invalid\n */\nexport const customEvent = (eventType: EventsType, handler: Events): ICustomHandler => {\n    if (!eventType) {\n        throw new TypeError('customEvent: eventType is required')\n    }\n    if (typeof handler !== 'function') {\n        throw new TypeError('customEvent: handler must be a function')\n    }\n    return {\n        eventType,\n        handler\n    }\n}\n\n/**\n * DomRegisterBuilder constructor for registering DOM event handlers and element context.\n * @constructor\n * @param {IExtendedInput} context - The input context for the builder.\n * @returns {IDomRegisterBuilder}\n * @throws {TypeError} If context is not provided or invalid\n */\nexport const DomRegisterBuilder = function (this: IDomRegisterBuilder, context: IExtendedInput) {\n    if (!context || typeof context !== 'object') {\n        throw new TypeError('DomRegisterBuilder: context must be a valid object')\n    }\n    this.eventsHandlers = {} as Record<string, Events[]>\n    this.element = {} as Partial<HTMLInputElement>\n    this.context = context\n} as any as IDomRegisterBuilder\n\nObject.assign(DomRegisterBuilder.prototype, {\n    assembleEventsHandlers,\n    buildLabel,\n    buildOption,\n    build,\n    registerAria,\n    registerBlur,\n    registerChange,\n    registerClick,\n    registerClickOption,\n    registerEvent,\n    registerEvents,\n    registerFocus,\n    registerKeyPress,\n    registerKeyUp\n})\n","/**\n * The register function is used to register the event handlers for the field input.\n */\n\nimport { aria } from '@core/input-engine/core/accessibility/arias'\nimport { DomRegisterBuilder } from '@core/input-engine/core/dom-registers-builder/dom-registers-builder'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\n\n/**\n * Registers event handlers and ARIA attributes for a field input component.\n * This function is intended to be used as part of the `IFieldInput` interface implementation.\n *\n * @template FieldValuesTypes - The type of the field values.\n * @this IFieldInput - The context of the field input instance.\n *\n * @returns An object containing the field's attributes and event handlers:\n * - `id`: The unique identifier for the field.\n * - `type`: The type of the input field (e.g., \"text\", \"checkbox\", \"radio\").\n * - `className`: The computed class names for the field.\n * - `label`: The label associated with the field.\n * - `onChange`: Event handler for the `change` event.\n * - `onBlur`: Event handler for the `blur` event.\n * - `onFocus`: Event handler for the `focus` event.\n * - `onClick`: Event handler for the `click` event.\n *\n * @remarks\n * - The function updates the UI state and triggers observers when events occur.\n * - It manages field states such as `pristine`, `dirty`, and `focus`.\n * - ARIA attributes (`aria-labelledby` and `name`) are set for accessibility compliance.\n *\n * @example\n * ```typescript\n * const fieldInput = new FieldInput();\n * const registeredField = fieldInput.register();\n *\n * <input\n *   id={registeredField.id}\n *   type={registeredField.type}\n *   className={registeredField.className}\n *   onChange={registeredField.onChange}\n *   onBlur={registeredField.onBlur}\n *   onFocus={registeredField.onFocus}\n *   onClick={registeredField.onClick}\n * />\n *  or simply\n *  <input {...field?.register()}  ref={field?.ref()} ...\n * />\n * ```\n */\nexport const register = function <FieldValuesTypes>(\n    this: IExtendedInput\n): Partial<HTMLInputElement> {\n    const lableId = `${this.input.id}${this.input.labelId}`\n    const describedbyId = `${this.input.id}${this.input.describedById}`\n\n    const arias = [\n        aria('labelledby', lableId),\n        aria('describedby', describedbyId),\n        aria('name', this.input.name),\n        aria('label', this.input.name),\n        aria('required', this.input.validationOptions?.required?.value ? 'true' : 'false'),\n        aria('invalid', this.input.isValid ? 'false' : 'true'),\n        aria('disabled', this.input.enabled ? 'false' : 'true'),\n        aria('readonly', 'false'),\n        aria('autocomplete', 'none'),\n        aria('haspopup', 'false'),\n        aria('expanded', 'false'),\n        aria('activedescendant', 'false')\n    ]\n\n    return new DomRegisterBuilder(this)\n        .registerChange()\n        .registerBlur()\n        .registerFocus()\n        .registerClick()\n        .registerAria(...arias)\n        .build()\n}\n","import { ICheckBoxBaseInput } from './check-box-base-input.types'\n\nimport { initialize } from './prototype/initialize'\nimport { ref } from './prototype/ref'\nimport { register } from './prototype/register'\n\nexport const CheckBoxInput = function (this: ICheckBoxBaseInput) {\n    this.isInitialized = false\n\n    Object.defineProperty(this, 'dependencyName', {\n        value: CheckBoxInput.name,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n\n    this.checked = false\n} as any as ICheckBoxBaseInput\n\nObject.assign(CheckBoxInput.prototype, {\n    initialize,\n    register,\n    ref\n})\n","import { IExtendedInputBase } from '@core/input-engine/core/input-base/input-base.types'\nimport { IClickBaseInput } from '../click-base/click-base-input.types'\nexport const SCheckBoxBaseInput = Symbol.for('ICheckBoxBaseInput')\nexport interface ICheckBoxBaseInputProperties {\n    clickBase: IClickBaseInput\n    checked?: boolean\n}\n\nexport interface ICheckBoxBaseInput extends ICheckBoxBaseInputProperties, IExtendedInputBase {\n    new (): ICheckBoxBaseInput\n}\n","import { abstractInitializer } from '@core/input-engine/core/abstract/abstract-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { notification } from '@core/managers/notification-manager/utils/new-notification-visitor'\nimport { IClickBaseInput } from '../click-base-input.types'\n\n/**\n * The setup function sets up the field input by subscribing to observers.\n * basic configuration for styles and validation\n */\nexport const initialize = async function (this: IClickBaseInput) {\n    try {\n        const success = await abstractInitializer(this.input, () => {}, [\n            notification(this, this.onClickHandle, 'onClick', 'onClick', this.name)\n        ])\n\n        if (success) {\n            // Object.setPrototypeOf(ClickBaseInput.prototype, FieldInput.prototype)\n            this.isInitialized = true\n        }\n    } catch (e: any) {\n        logManager(this.input.trackingManager, 'critical', this.dependencyName, e)\n    }\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { newEvent } from '@core/framework/events/new-event'\nimport { IClickBaseInput } from '../click-base-input.types'\n\nexport const onClickHandle = function <T extends IEvents>(this: IClickBaseInput, data?: T) {\n    if (!data?.fieldRef?.input.validationManager?.triggerKeyWordType.includes('onClick')) return\n    // console.log('onClickHandle', f.name, f.value)\n    data?.fieldRef?.input.notificationManager?.debounceNotify(\n        'onValidate',\n        data?.fieldRef?.input.onValidateDelay,\n        newEvent(\n            data?.fieldRef?.input.name,\n            onClickHandle.name,\n            'onValidate',\n            `field.state.${onClickHandle.name}`,\n            data?.fieldRef?.input.name,\n            data?.fieldRef\n        ),\n        String(data?.fieldRef?.input.id) // Pass field ID as channel\n    )\n}\n","import { IClickBaseInput } from './click-base-input.types'\nimport { initialize } from './prototype/initialize'\nimport { onClickHandle } from './prototype/on-click-handle'\n\nexport const ClickBaseInput = function (this: IClickBaseInput) {\n    this.isInitialized = false\n\n    Object.defineProperty(this, 'dependencyName', {\n        value: ClickBaseInput.name,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n} as any as IClickBaseInput\n\nObject.assign(ClickBaseInput.prototype, {\n    initialize,\n    onClickHandle\n})\n","import { IEvents } from '@core/framework/events/events.types'\nimport { IExtendedInputBase } from '@core/input-engine/core/input-base/input-base.types'\nexport const SClickBaseInput = Symbol.for('IClickBaseInput')\nexport interface IClickBaseInputProperties {}\n\nexport interface IClickBaseInput extends IClickBaseInputProperties, IExtendedInputBase {\n    new (): IClickBaseInput\n    onClickHandle: <T extends IEvents>(data?: T) => void\n}\n","import { abstractInitializer } from '@core/input-engine/core/abstract/abstract-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { IDrawerBaseInput } from '../drawer-base-input.types'\n\n/**\n * The setup function sets up the field input by subscribing to observers.\n * basic configuration for styles and validation\n */\nexport const initialize = async function (this: IDrawerBaseInput) {\n    try {\n        const success = await abstractInitializer(this.input, (e) => {})\n\n        if (success) {\n            this.isInitialized = true\n        }\n    } catch (e: any) {\n        logManager(this.input.trackingManager, 'critical', this.dependencyName, e)\n    }\n}\n","import { ToggleableStateType } from '@core/framework/common/common.toggleable'\nimport { newEvent } from '@core/framework/events/new-event'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IDrawerBaseInput } from '../drawer-base-input.types'\n\n/**\n * Sets the open state of the field input and notifies observers of the change.\n *\n * @param state - The new open state to set for the field input.\n *\n * @this IFieldInput - The field input instance on which the open state is being set.\n *\n * @remarks\n * This method updates the `openState` property of the field input and triggers a notification\n * to observers with the event type `'changed'`. The notification includes the field name and\n * a field state of `'reset'`.\n */\nexport const setOpenState = function (this: IDrawerBaseInput, state: ToggleableStateType) {\n    this.openState = state\n    //this.observers.trigger()\n    this.input.notificationManager?.notify(\n        'onOpen',\n        newEvent(\n            this.input.name,\n            setOpenState.name,\n            'onOpen',\n            `field.state.${setOpenState.name}`,\n            this.input.name,\n            this as unknown as IExtendedInput\n        )\n    )\n}\n","import { IDrawerBaseInput } from './drawer-base-input.types'\nimport { initialize } from './prototype/initialize'\nimport { setOpenState } from './prototype/set-open-state'\n\nexport const DrawerBaseInput = function (this: IDrawerBaseInput) {\n    this.isInitialized = false\n\n    Object.defineProperty(this, 'dependencyName', {\n        value: DrawerBaseInput.name,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n} as any as IDrawerBaseInput\n\nObject.assign(DrawerBaseInput.prototype, {\n    initialize,\n    setOpenState\n})\n","import { ToggleableStateType } from '@core/framework/common/common.toggleable'\nimport { IExtendedInputBase } from '@core/input-engine/core/input-base/input-base.types'\nexport const SDrawerBaseInput = Symbol.for('IDrawerBaseInput')\nexport interface IDrawerBaseInputProperties {\n    openState: ToggleableStateType\n}\n\nexport interface IDrawerBaseInput extends IDrawerBaseInputProperties, IExtendedInputBase {\n    new (): IDrawerBaseInput\n    setOpenState: (state: ToggleableStateType) => void\n}\n","import { ExceptionManager, newAssert } from '@core/framework/exceptions/exception-manager'\nimport { abstractInitializer } from '@core/input-engine/core/abstract/abstract-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { IMaskedBaseInput } from '../masked-base-input.types'\n\n/**\n * The setup function sets up the field input by subscribing to observers.\n * basic configuration for styles and validation\n */\nexport const initialize = async function (this: IMaskedBaseInput) {\n    try {\n        const success = await abstractInitializer(\n            this.input,\n            (e) => {\n                e.maskInitialized = this.mask && this.mask.length > 0\n                logManager(undefined, 'info', 'initialize', e.name)\n            },\n            [\n                // notification(this, this.handleOnChanged, 'onChange', 'onChange', this.name),\n                // notification(this, this.handleOnClear, 'onClear', 'onClear', this.name)\n            ]\n        )\n\n        if (success) {\n            const em = new ExceptionManager(\n                ...[\n                    newAssert(this.input !== undefined, `The dependency field is not instanciated`),\n                    newAssert(\n                        this.input.isInitialized,\n                        `${this.dependencyName}: The dependency field is not properly initialized`\n                    )\n                ]\n            )\n            em.process()\n            if (em.hasErrors()) {\n                logManager(undefined, 'critical', 'initialize', em.toString())\n            } else {\n                this.isInitialized = true\n            }\n        }\n    } catch (e: any) {\n        logManager(this.input.trackingManager, 'critical', this.dependencyName, e)\n    }\n}\n","export const processMaskedValue = function (mask: string, value: string): string {\n    // Handle null, undefined, or empty values\n    if (!value) {\n        return ''\n    }\n\n    let processedValue = ''\n    let index = 0\n\n    for (let i = 0; i < value.length; i++) {\n        if (index >= mask.length) break\n\n        if (mask[index] === '#') {\n            /** check if value is numeric */\n            if (/\\d/.test(value[i])) {\n                processedValue += value[i]\n                index++\n            }\n        } else {\n            processedValue += mask[index]\n            index++\n            i-- // go back and check the current character again.\n        }\n    }\n\n    return processedValue\n}\n","import { onChangedHandle } from '@core/input-engine/core/input-base/events/on-changed-handle'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { processMaskedValue } from '../core/process-masked-value'\nimport { IMaskedBaseInput } from '../masked-base-input.types'\n\n/**\n * Handles the change event for a field input.\n *\n * @this IMaskedBaseInput - The context of the field input instance.\n * @param e - The change event from the input element.\n *\n * Processes the input value and applies the mask formatting.\n */\nexport const onChange = function (this: IMaskedBaseInput, e: Event) {\n    console.log('🔥 Masked onChange called', { event: e, mask: this.mask })\n    const inputElement = e.target as HTMLInputElement\n    const oldValue =\n        (this.input.valueManager.getValue(this as unknown as IExtendedInput) as string) || ''\n    const oldCursorPos = inputElement.selectionStart ?? 0\n    const inputValue = inputElement.value\n\n    console.log('📍 Before processing', { oldValue, oldCursorPos, inputValue })\n\n    // Count digits before cursor position in the current input\n    const digitsBeforeCursor = inputValue.slice(0, oldCursorPos).replace(/\\D/g, '').length\n\n    const rawValue = inputValue.replace(/\\D/g, '') // Remove non-numeric characters\n    const formattedValue = processMaskedValue(this.mask, rawValue)\n    console.log('🔄 After processing', { rawValue, formattedValue, digitsBeforeCursor })\n\n    if (formattedValue === undefined || formattedValue === '') {\n        console.log('🚫 Setting value to null - empty formatted value')\n        this.input.valueManager.setValue(this as unknown as IExtendedInput, null)\n        inputElement.value = ''\n    } else {\n        // For masked inputs, only update the display value\n        inputElement.value = formattedValue\n\n        // Store the raw formatted value in a custom property\n        ;(this as any)._maskedValue = formattedValue\n\n        console.log('✅ Setting formatted value', { formattedValue })\n\n        // Calculate new cursor position based on digit count\n        const newCursorPos = findPositionAfterNthDigit(formattedValue, digitsBeforeCursor)\n\n        console.log('🎯 Cursor positioning', {\n            digitsBeforeCursor,\n            newCursorPos,\n            formattedValue\n        })\n\n        requestAnimationFrame(() => {\n            inputElement.setSelectionRange(newCursorPos, newCursorPos)\n        })\n    }\n\n    if (onChangedHandle) onChangedHandle(this as unknown as IExtendedInput)\n}\n\n/**\n * Finds the position after the nth digit in a formatted string\n */\nfunction findPositionAfterNthDigit(formattedValue: string, digitCount: number): number {\n    if (digitCount === 0) return 0\n\n    let foundDigits = 0\n    for (let i = 0; i < formattedValue.length; i++) {\n        if (/\\d/.test(formattedValue[i])) {\n            foundDigits++\n            if (foundDigits === digitCount) {\n                return i + 1\n            }\n        }\n    }\n\n    // If we didn't find enough digits, return the end\n    return formattedValue.length\n}\n\n// ...existing code...\n","import { IMaskedBaseInput } from '../masked-base-input.types'\n\nexport const onKeyPress = function (this: IMaskedBaseInput, e: KeyboardEvent) {\n    const inputElement = e.target as HTMLInputElement\n    const key = e.key\n    const currentValue = inputElement.value\n    const cursorPos = inputElement.selectionStart ?? 0\n\n    console.log('🔑 onKeyPress', { key, cursorPos, currentValue, mask: this.mask })\n\n    // Store cursor position for later use\n    this.input.cursorPosition = cursorPos\n\n    // Allow control keys (backspace, delete, arrow keys, etc.)\n    if (\n        e.ctrlKey ||\n        e.metaKey ||\n        e.altKey ||\n        [\n            'Backspace',\n            'Delete',\n            'Tab',\n            'Enter',\n            'Escape',\n            'ArrowLeft',\n            'ArrowRight',\n            'ArrowUp',\n            'ArrowDown',\n            'Home',\n            'End'\n        ].includes(key)\n    ) {\n        return\n    }\n\n    // Only allow numeric input for our masks\n    if (!/\\d/.test(key)) {\n        e.preventDefault()\n        return\n    }\n\n    // Check if we can accept this digit at the current position\n    if (!canAcceptDigitAtPosition(cursorPos, currentValue, this.mask)) {\n        e.preventDefault()\n    }\n}\n\n/**\n * Checks if a digit can be accepted at the current cursor position\n */\nfunction canAcceptDigitAtPosition(cursorPos: number, currentValue: string, mask: string): boolean {\n    // Count how many digits we currently have\n    const currentDigits = currentValue.replace(/\\D/g, '')\n\n    // Count how many digit positions the mask allows\n    const maxDigits = mask.split('').filter((char) => char === '#').length\n\n    // If we're already at the maximum number of digits, reject\n    if (currentDigits.length >= maxDigits) {\n        return false\n    }\n\n    // Find the next available digit position in the mask after cursor\n    let maskPos = 0\n    let valuePos = 0\n\n    // Map cursor position to mask structure\n    while (valuePos < cursorPos && maskPos < mask.length) {\n        if (mask[maskPos] === '#') {\n            // This is a digit position\n            if (valuePos < currentValue.length && /\\d/.test(currentValue[valuePos])) {\n                valuePos++\n            }\n            maskPos++\n        } else {\n            // This is a separator\n            if (valuePos < currentValue.length && currentValue[valuePos] === mask[maskPos]) {\n                valuePos++\n            }\n            maskPos++\n        }\n    }\n\n    // Find the next digit position in the mask\n    while (maskPos < mask.length) {\n        if (mask[maskPos] === '#') {\n            // Found a digit position - we can accept the input\n            return true\n        }\n        maskPos++\n    }\n\n    // No more digit positions available\n    return false\n}\n","import { IMaskedBaseInput } from '../masked-base-input.types'\n\nexport const onKeyUp = function (this: IMaskedBaseInput, e: KeyboardEvent) {\n    const inputElement = e.target as HTMLInputElement\n    const key = e.key\n}\n","import { referencer } from '@core/input-engine/core/referencers/referencer'\nimport { IMaskedBaseInput } from '../masked-base-input.types'\n\nexport const ref = function (this: IMaskedBaseInput, ref: HTMLInputElement | null) {\n    if (this.input) {\n        referencer(this.input, ref)\n    } else {\n        console.log('---ISSUE')\n    }\n}\n","export function memoize<T extends (...args: any[]) => any>(fn: T): T {\n    const objectCache = new WeakMap<object, Map<string, ReturnType<T>>>()\n    const primitiveCache = new Map<string, ReturnType<T>>()\n\n    return function (...args: Parameters<T>): ReturnType<T> {\n        const [firstArg, ...restArgs] = args\n        const key = JSON.stringify(restArgs)\n\n        if (typeof firstArg === 'object' && firstArg !== null) {\n            if (!objectCache.has(firstArg)) {\n                objectCache.set(firstArg, new Map())\n            }\n            const cacheForObject = objectCache.get(firstArg)!\n            if (cacheForObject.has(key)) {\n                return cacheForObject.get(key) as ReturnType<T>\n            }\n            const result = fn(...args)\n            cacheForObject.set(key, result)\n            return result\n        } else {\n            // Handle primitive arguments using a separate Map\n            const primitiveKey = JSON.stringify([firstArg, ...restArgs])\n            if (primitiveCache.has(primitiveKey)) {\n                return primitiveCache.get(primitiveKey) as ReturnType<T>\n            }\n            const result = fn(...args)\n            primitiveCache.set(primitiveKey, result)\n            return result\n        }\n    } as T\n}\n","import { aria } from '@core/input-engine/core/accessibility/arias'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { memoize } from './memoize'\n\nexport const computeAriaAttributes = memoize((ei: IExtendedInput) => {\n    const lableId = `${ei?.input.id}${ei?.input.labelId}`\n    const describedbyId = `${ei?.input.id}${ei?.input.describedById}`\n\n    return [\n        aria('labelledby', lableId),\n        aria('describedby', describedbyId),\n        aria('name', ei?.input.name),\n        aria('label', ei?.input.name),\n        aria('required', ei?.input.validationOptions?.required?.value ? 'true' : 'false'),\n        aria('invalid', ei?.input.isValid ? 'false' : 'true'),\n        aria('disabled', ei?.input.enabled ? 'false' : 'true'),\n        aria('readonly', 'false'),\n        aria('autocomplete', 'none'),\n        aria('haspopup', 'false'),\n        aria('expanded', 'false'),\n        aria('activedescendant', 'false')\n    ]\n})\n","/**\n * The register function is used to register the event handlers for the field input.\n */\n\nimport { computeAriaAttributes } from '@core/framework/optimization/compute-aria-attributes'\nimport { DomRegisterBuilder } from '@core/input-engine/core/dom-registers-builder/dom-registers-builder'\nimport { ICustomHandler } from '@core/input-engine/core/dom-registers-builder/dom-registers-builder.type'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IMaskedBaseInput } from '../masked-base-input.types'\nimport { onChange } from './on-change'\nimport { onKeyPress } from './on-key-press'\nimport { onKeyUp } from './on-key-up'\n\n/**\n * Registers event handlers and ARIA attributes for a field input component.\n * This function is intended to be used as part of the `IFieldInput` interface implementation.\n *\n * @template FieldValuesTypes - The type of the field values.\n * @this IFieldInput - The context of the field input instance.\n *\n * @returns An object containing the field's attributes and event handlers:\n * - `id`: The unique identifier for the field.\n * - `type`: The type of the input field (e.g., \"text\", \"checkbox\", \"radio\").\n * - `className`: The computed class names for the field.\n * - `label`: The label associated with the field.\n * - `onChange`: Event handler for the `change` event.\n * - `onBlur`: Event handler for the `blur` event.\n * - `onFocus`: Event handler for the `focus` event.\n * - `onClick`: Event handler for the `click` event.\n *\n * @remarks\n * - The function updates the UI state and triggers observers when events occur.\n * - It manages field states such as `pristine`, `dirty`, and `focus`.\n * - ARIA attributes (`aria-labelledby` and `name`) are set for accessibility compliance.\n *\n * @example\n * ```typescript\n * const fieldInput = new FieldInput();\n * const registeredField = fieldInput.register();\n *\n * <input\n *   id={registeredField.id}\n *   type={registeredField.type}\n *   className={registeredField.className}\n *   onChange={registeredField.onChange}\n *   onBlur={registeredField.onBlur}\n *   onFocus={registeredField.onFocus}\n *   onClick={registeredField.onClick}\n * />\n *  or simply\n *  <input {...field?.register()}  ref={field?.ref()} ...\n * />\n * ```\n */\n\nexport const register = function <FieldValuesTypes>(\n    this: IExtendedInput,\n    ...customHandlers: ICustomHandler[]\n): Partial<HTMLInputElement> {\n    const arias = computeAriaAttributes(this)\n\n    return new DomRegisterBuilder(this)\n        .registerChange(onChange.bind(this as unknown as IMaskedBaseInput))\n        .registerKeyPress(onKeyPress.bind(this as unknown as IMaskedBaseInput))\n        .registerKeyUp(onKeyUp.bind(this as unknown as IMaskedBaseInput))\n        .registerEvents(...customHandlers)\n        .registerBlur()\n        .registerFocus()\n        .registerAria(...arias)\n        .build()\n}\n","import { IMaskedBaseInput } from './masked-base-input.types'\nimport { initialize } from './prototype/initialize'\nimport { onChange } from './prototype/on-change'\nimport { onKeyPress } from './prototype/on-key-press'\nimport { onKeyUp } from './prototype/on-key-up'\nimport { ref } from './prototype/ref'\nimport { register } from './prototype/register'\n\nexport const MaskedBaseInput = function (this: IMaskedBaseInput, mask: string) {\n    this.isInitialized = false\n    // Debug logging\n    // Try multiple logging approaches\n    console.error('🔍 MaskedBaseInput constructor called - ERROR LOG')\n    console.warn('🔍 MaskedBaseInput constructor called - WARN LOG')\n    console.log('🔍 MaskedBaseInput constructor called - REGULAR LOG')\n    // This will force a breakpoint if dev tools are open\n\n    // In the debugger console while stopped at breakpoint\n    console.log('mask:', mask)\n    console.log('typeof mask:', typeof mask)\n    console.log('Array.isArray(mask):', Array.isArray(mask))\n    console.log('arguments:', arguments)\n    console.log('arguments length:', arguments.length)\n\n    console.log('🔍 MaskedBaseInput constructor called with:', {\n        mask,\n        type: typeof mask,\n        isArray: Array.isArray(mask),\n        arguments: Array.from(arguments)\n    })\n\n    // Handle potential array wrapping\n    const actualMask = Array.isArray(mask) ? mask[0] : mask\n\n    Object.defineProperty(this, 'mask', {\n        value: actualMask,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n\n    Object.defineProperty(this, 'dependencyName', {\n        value: MaskedBaseInput.name,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n} as any as IMaskedBaseInput\n\nObject.assign(MaskedBaseInput.prototype, {\n    initialize,\n    onChange,\n    ref,\n    onKeyPress,\n    onKeyUp,\n    register\n})\n","import { ICustomHandler } from '@core/input-engine/core/dom-registers-builder/dom-registers-builder.type'\nimport { IExtendedInputBase } from '@core/input-engine/core/input-base/input-base.types'\nexport const SMaskedBaseInput = Symbol.for('IMaskedBaseInput')\nexport interface IMaskedBaseInput extends IExtendedInputBase {\n    new (mask: string): IMaskedBaseInput\n    readonly mask: string\n    maskInitialized: boolean\n    ref: (ref: HTMLInputElement | null) => void\n    register: (...customHandlers: ICustomHandler[]) => any\n    onChange: (e: Event) => void\n    setMask: (mask: string) => void\n    onKeyPress: (e: KeyboardEvent) => void\n    onKeyUp: (e: KeyboardEvent) => void\n    initialize: () => void\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { onChangedHandle } from '@core/input-engine/core/input-base/events/on-changed-handle'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { INumericBaseInput } from '../numeric-base-input.types'\n\n/**\n * Handles the change event for a field input.\n *\n * @this IFieldInput - The context of the field input instance.\n * @param data - Optional parameter representing the new data or value associated with the change event.\n *\n * Logs the updated value and the provided data to the console.\n */\nexport const handleOnChanged = function <T extends IEvents>(this: INumericBaseInput, data?: T) {\n    onChangedHandle(this as unknown as IExtendedInput)\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { onClearHandle } from '@core/input-engine/core/input-base/events/on-clear-handle'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { INumericBaseInput } from '../numeric-base-input.types'\n\n/**\n * Handles the change event for a field input.\n *\n * @this IFieldInput - The context of the field input instance.\n * @param data - Optional parameter representing the new data or value associated with the change event.\n *\n * Logs the updated value and the provided data to the console.\n */\nexport const handleOnClear = function <T extends IEvents>(this: INumericBaseInput, data?: T) {\n    onClearHandle(this as unknown as IExtendedInput)\n}\n","import { ExceptionManager, newAssert } from '@core/framework/exceptions/exception-manager'\nimport { abstractInitializer } from '@core/input-engine/core/abstract/abstract-initializer'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { notification } from '@core/managers/notification-manager/utils/new-notification-visitor'\n\n/**\n * The setup function sets up the field input by subscribing to observers.\n * basic configuration for styles and validation\n */\nexport const initialize = async function (this: IExtendedInput) {\n    try {\n        const success = await abstractInitializer(this.input, () => {}, [\n            notification(this, this.handleOnChanged, 'onChange', 'onChange', this.name),\n            notification(this, this.handleOnClear, 'onClear', 'onClear', this.name)\n        ])\n\n        if (success) {\n            const em = new ExceptionManager(\n                ...[\n                    newAssert(this.input !== undefined, `The dependency field is not instanciated`),\n                    newAssert(\n                        this.input.isInitialized,\n                        `${this.dependencyName}: The dependency field is not properly initialized`\n                    )\n                ]\n            )\n            em.process()\n            if (em.hasErrors()) {\n                logManager(undefined, 'critical', 'initialize', em.toString())\n            } else {\n                this.isInitialized = true\n            }\n        }\n    } catch (e: any) {\n        logManager(this.input.trackingManager, 'critical', this.dependencyName, e)\n    }\n}\n","import { referencer } from '@core/input-engine/core/referencers/referencer'\nimport { INumericBaseInput } from '../numeric-base-input.types'\n\nexport const ref = function (this: INumericBaseInput, ref: HTMLInputElement | null) {\n    if (this.input) {\n        referencer(this.input, ref)\n    } else {\n        console.log('---ISSUE')\n    }\n}\n","/**\n * The register function is used to register the event handlers for the field input.\n */\n\nimport { aria } from '@core/input-engine/core/accessibility/arias'\nimport { DomRegisterBuilder } from '@core/input-engine/core/dom-registers-builder/dom-registers-builder'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\n\n/**\n * Registers event handlers and ARIA attributes for a field input component.\n * This function is intended to be used as part of the `IFieldInput` interface implementation.\n *\n * @template FieldValuesTypes - The type of the field values.\n * @this IFieldInput - The context of the field input instance.\n *\n * @returns An object containing the field's attributes and event handlers:\n * - `id`: The unique identifier for the field.\n * - `type`: The type of the input field (e.g., \"text\", \"checkbox\", \"radio\").\n * - `className`: The computed class names for the field.\n * - `label`: The label associated with the field.\n * - `onChange`: Event handler for the `change` event.\n * - `onBlur`: Event handler for the `blur` event.\n * - `onFocus`: Event handler for the `focus` event.\n * - `onClick`: Event handler for the `click` event.\n *\n * @remarks\n * - The function updates the UI state and triggers observers when events occur.\n * - It manages field states such as `pristine`, `dirty`, and `focus`.\n * - ARIA attributes (`aria-labelledby` and `name`) are set for accessibility compliance.\n *\n * @example\n * ```typescript\n * const fieldInput = new FieldInput();\n * const registeredField = fieldInput.register();\n *\n * <input\n *   id={registeredField.id}\n *   type={registeredField.type}\n *   className={registeredField.className}\n *   onChange={registeredField.onChange}\n *   onBlur={registeredField.onBlur}\n *   onFocus={registeredField.onFocus}\n *   onClick={registeredField.onClick}\n * />\n *  or simply\n *  <input {...field?.register()}  ref={field?.ref()} ...\n * />\n * ```\n */\nexport const register = function <FieldValuesTypes>(\n    this: IExtendedInput\n): Partial<HTMLInputElement> {\n    const lableId = `${this.input.id}${this.input.labelId}`\n    const describedbyId = `${this.input.id}${this.input.describedById}`\n\n    const arias = [\n        aria('labelledby', lableId),\n        aria('describedby', describedbyId),\n        aria('name', this.input.name),\n        aria('label', this.input.name),\n        aria('required', this.input.validationOptions?.required?.value ? 'true' : 'false'),\n        aria('invalid', this.input.isValid ? 'false' : 'true'),\n        aria('disabled', this.input.enabled ? 'false' : 'true'),\n        aria('readonly', 'false'),\n        aria('autocomplete', 'none'),\n        aria('haspopup', 'false'),\n        aria('expanded', 'false'),\n        aria('activedescendant', 'false')\n    ]\n\n    return new DomRegisterBuilder(this)\n        .registerChange()\n        .registerBlur()\n        .registerFocus()\n        .registerAria(...arias)\n        .build()\n}\n","import { INumericBaseInput } from './numeric-base-input.types'\nimport { handleOnChanged } from './prototype/handle-on-changed'\nimport { handleOnClear } from './prototype/handle-on-clear'\nimport { initialize } from './prototype/initialize'\nimport { ref } from './prototype/ref'\nimport { register } from './prototype/register'\n\nexport const NumericBaseInput = function (this: INumericBaseInput) {\n    this.isInitialized = false\n\n    Object.defineProperty(this, 'dependencyName', {\n        value: NumericBaseInput.name,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n} as any as INumericBaseInput\n\nObject.assign(NumericBaseInput.prototype, {\n    initialize,\n    handleOnChanged,\n    handleOnClear,\n    ref,\n    register\n})\n","import { InputDataTypes } from '@core/framework/common/common.input.data.types'\nimport { IEvents } from '@core/framework/events/events.types'\nimport { ICustomHandler } from '@core/input-engine/core/dom-registers-builder/dom-registers-builder.type'\n\nimport { IExtendedInputBase } from '@core/input-engine/core/input-base/input-base.types'\n\nexport const SNumericBaseInput = Symbol.for('INumericBaseInput')\n\nexport interface INumericBaseInput extends IExtendedInputBase {\n    new (): INumericBaseInput\n    ref: (ref: HTMLInputElement | null) => void\n    register: (...customHandlers: ICustomHandler[]) => any\n    setValue: (value: InputDataTypes) => void\n    getValue: () => InputDataTypes\n    handleOnChanged: <T extends IEvents>(data?: T) => void\n    handleOnClear: <T extends IEvents>(data?: T) => void\n}\n","import { IOptionBaseInput } from '../option-base-input.types'\n\nexport const checkOptionsInitialized = function (this: IOptionBaseInput) {\n    const intitializedOptions: boolean[] = []\n    this.options.forEach((element) => {\n        if (this.input.domManager?.dmExists(String(element.id!))) {\n            intitializedOptions.push(true)\n        }\n    })\n    return intitializedOptions.filter((o) => o).length === this.options.length\n}\n","import { IOptionBaseInput } from '../option-base-input.types'\n\nexport const getOptionById = function (this: IOptionBaseInput, id: string) {\n    if (this.options?.length === 0) {\n        this.input.message(\n            'warning',\n            'IFieldInput.getOptionById',\n            `there is no options related to the field of type: ${this.input.type}, name: ${this.name} `\n        )\n        return null\n    }\n    return this.options.find((o) => o.id === id)\n}\n","import { IOptionBaseInput } from '../option-base-input.types'\n\nexport const getOptionBySequenceId = function (this: IOptionBaseInput, sequenceId: number) {\n    if (this.options?.length === 0) {\n        this.input.message(\n            'warning',\n            'IFieldInput.getOptionById',\n            `there is no options related to the field of type: ${this.input.type}, name: ${this.name} SequenceId: ${sequenceId}`\n        )\n        return null\n    }\n    return this.options.find((o) => o.sequenceId === sequenceId)\n}\n","import { IOptionBaseInput } from '../option-base-input.types'\n\nexport const getOptionByValue = function (this: IOptionBaseInput, value: string) {\n    if (this.options?.length === 0) {\n        this.input.message(\n            'warning',\n            'IFieldInput.getOptionByValue',\n            `there is no options related to the field of type: ${this.input.type}, name: ${this.name} `\n        )\n        return null\n    }\n    return this.options.find((o) => o.value === value)\n}\n","import { IOptionBaseInput } from '../option-base-input.types'\n\nexport const getSelectedValue = function (this: IOptionBaseInput) {\n    const value = this?.selectedOptionId\n        ? this?.getOptionBySequenceId(this?.selectedOptionId)?.text\n        : ''\n\n    return value\n}\n","import { ExceptionManager, newAssert } from '@core/framework/exceptions/exception-manager'\n\nimport { abstractInitializer } from '@core/input-engine/core/abstract/abstract-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { IOptionBaseInput } from '../option-base-input.types'\n\n/**\n * The setup function sets up the field input by subscribing to observers.\n * basic configuration for styles and validation\n */\nexport const initialize = async function (this: IOptionBaseInput) {\n    try {\n        const success = await abstractInitializer(this.input, (context) => {\n            // context.options = params.descriptor?.options ?? []\n            context.optionsInitialized = this.options && this.options.length > 0\n            context.selectedOptionId = null\n        })\n\n        if (success) {\n            const em = new ExceptionManager(\n                ...[\n                    newAssert(this.input !== undefined, `The dependency field is not instanciated`),\n                    newAssert(\n                        this.input.isInitialized,\n                        `${this.dependencyName}: The dependency field is not properly initialized`\n                    ),\n                    newAssert(\n                        this?.options?.length > 0,\n                        `${this.dependencyName}: None options were provided. this feature will not work properly`\n                    )\n                ]\n            )\n\n            em.process()\n            if (em.hasErrors()) {\n                logManager(undefined, 'critical', 'initialize', em.toString())\n            } else {\n                this.isInitialized = true\n            }\n        }\n    } catch (e: any) {\n        logManager(this.input.trackingManager, 'critical', this.dependencyName, e)\n    }\n}\n","import { IOptionBaseInput } from '../option-base-input.types'\n\nexport const tryGetOptionByIdOrValue = function (\n    this: IOptionBaseInput,\n    id: string,\n    value: string\n) {\n    if (this.options?.length === 0) {\n        this.input.message(\n            'warning',\n            'IFieldInput.tryGetOptionByIdOrValue',\n            `there is no options related to the field of type: ${this.input.type}, name: ${this.name}`\n        )\n\n        return null\n    }\n\n    return this.options?.find((o) => o.id === `${id}` || o.value === value) ?? null\n}\n","import { IOptionBaseInput } from '../option-base-input.types'\n\nexport const tryGetOptionBySequenceIdThenIdOrValue = function (\n    this: IOptionBaseInput,\n    sequenceId: number,\n    id: string,\n    value: string\n) {\n    if (this.options?.length === 0) {\n        this.input.message(\n            'warning',\n            'IFieldInput.tryGetOptionBySequenceIdThenIdOrValue',\n            `there is no options related to the field of type:  type: ${this.input.type}, name: ${this.name}, sequenceId: ${sequenceId}`\n        )\n\n        return null\n    }\n    return (\n        this.options?.find(\n            (o) => o.sequenceId === sequenceId || o.id === `${id}` || o.value === value\n        ) ?? null\n    )\n}\n","import { IOptionItem } from '@core/framework/schema/option-schema/options.scheme.types'\nimport { IOptionBaseInput } from './option-base-input.types'\nimport { checkOptionsInitialized } from './prototype/check-options-initialized'\nimport { getOptionById } from './prototype/get-option-by-id'\nimport { getOptionBySequenceId } from './prototype/get-option-by-sequence-id'\nimport { getOptionByValue } from './prototype/get-option-by-value'\nimport { getSelectedValue } from './prototype/get-selected-value'\nimport { initialize } from './prototype/initialize'\nimport { tryGetOptionByIdOrValue } from './prototype/try-get-option-by-id-or-value'\nimport { tryGetOptionBySequenceIdThenIdOrValue } from './prototype/try-get-option-by-sequence-id-then-id-or-value'\n\nexport const OptionBaseInput = function (this: IOptionBaseInput, options: IOptionItem[]) {\n    this.isInitialized = false\n\n    Object.defineProperty(this, 'dependencyName', {\n        value: OptionBaseInput.name,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n\n    this.options = options ?? []\n    this.optionsInitialized = false\n    this.selectedOptionId = null\n} as any as IOptionBaseInput\n\nObject.assign(OptionBaseInput.prototype, {\n    initialize,\n    checkOptionsInitialized,\n    getSelectedValue,\n    getOptionByValue,\n    getOptionById,\n    getOptionBySequenceId,\n    tryGetOptionByIdOrValue,\n    tryGetOptionBySequenceIdThenIdOrValue\n})\n","import { IOptionItem } from '@core/framework/schema/option-schema/options.scheme.types'\nimport { IExtendedInputBase, IInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IClickBaseInput } from '../click-base/click-base-input.types'\n\nexport const SOptionBaseInput = Symbol.for('IOptionBaseInput')\n\nexport type IOptionInput = IOptionBaseInput & IClickBaseInput & IInput\n\nexport interface IOptionBaseInputProperties {\n    optionsInitialized: boolean\n    options: IOptionItem[]\n    /** works with IOptionItem[] and fields of type select*/\n    selectedOptionId: number | null\n}\n\nexport interface IOptionBaseInput extends IOptionBaseInputProperties, IExtendedInputBase {\n    new (options: IOptionItem[]): IOptionBaseInput\n\n    checkOptionsInitialized: () => boolean\n\n    getOptionByValue: (value: string) => IOptionItem | null\n    getOptionById: (id: string) => IOptionItem | null\n    getOptionBySequenceId: (sequenceId: number) => IOptionItem | null\n    tryGetOptionByIdOrValue: (id: string, value: string) => IOptionItem | null\n    tryGetOptionBySequenceIdThenIdOrValue: (\n        sequenceId: number,\n        id: string,\n        value: string\n    ) => IOptionItem | null\n    getSelectedValue: () => string | undefined\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { onChangedHandle } from '@core/input-engine/core/input-base/events/on-changed-handle'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IRadioBaseInput } from '../radio-base-input.types'\n\n/**\n * Handles the change event for a field input.\n *\n * @this IFieldInput - The context of the field input instance.\n * @param data - Optional parameter representing the new data or value associated with the change event.\n *\n * Logs the updated value and the provided data to the console.\n */\nexport const handleOnChanged = function <T extends IEvents>(this: IRadioBaseInput, data?: T) {\n    onChangedHandle(this as unknown as IExtendedInput)\n}\n","import { ExceptionManager, newAssert } from '@core/framework/exceptions/exception-manager'\n\nimport { abstractInitializer } from '@core/input-engine/core/abstract/abstract-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { notification } from '@core/managers/notification-manager/utils/new-notification-visitor'\nimport { IRadioBaseInput } from '../radio-base-input.types'\n\n/**\n * The setup function sets up the field input by subscribing to observers.\n * basic configuration for styles and validation\n */\nexport const initialize = async function (this: IRadioBaseInput) {\n    try {\n        const success = await abstractInitializer(this.input, () => {}, [\n            notification(this, this.handleOnChanged, 'onChange', 'onChange', this.name)\n        ])\n\n        if (success) {\n            const em = new ExceptionManager(\n                ...[\n                    newAssert(this.input !== undefined, `The dependency field is not instanciated`),\n                    newAssert(\n                        this.input.isInitialized,\n                        `${this.dependencyName}: The dependency field is not properly initialized`\n                    ),\n                    newAssert(\n                        this.optionBase?.options?.length > 0,\n                        `${this.dependencyName}: The needed dependency on OptionBase is not properly initialized or none options were provided.`\n                    ),\n                    newAssert(\n                        this.optionBase?.isInitialized,\n                        `${this.dependencyName}: The this.optionBase is not properly initialized`\n                    ),\n                    newAssert(\n                        this.clickBase?.isInitialized,\n                        `${this.dependencyName}: The this.clickBase is not properly initialized`\n                    )\n                ]\n            )\n            em.process()\n            if (em.hasErrors()) {\n                logManager(undefined, 'critical', 'initialize', em.toString())\n            } else {\n                this.isInitialized = true\n            }\n        }\n    } catch (e: any) {\n        logManager(this.input.trackingManager, 'critical', this.dependencyName, e)\n    }\n}\n","import { referencer } from '@core/input-engine/core/referencers/referencer'\nimport { IRadioBaseInput } from '../radio-base-input.types'\n\nexport const ref = function (this: IRadioBaseInput, ref: HTMLInputElement | null) {\n    referencer(this.input, ref)\n}\n","import { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { optionReferencer } from '@core/input-engine/core/referencers/referencer'\n\n/** In oposition to the above ref function the refOption function requires that the component manages the ref by itself\n * I guess (not sure at this point!) but I believe tha's because of the render nature.\n * as it's render through a [].MAP => if it's created by React.createRef the class is not aware of the ref itself\n * until the render is complete. And each render will create a new ref whitch is not what we want.\n *\n * In this case we provide a ref from the component itself and we add to the collection only if the ref has already\n * been created and the value (current) is referencing the input.\n *  */\nexport const refOption = function (this: IExtendedInput, ref: HTMLInputElement | null) {\n    optionReferencer(this, ref)\n}\n","/**\n * The register function is used to register the event handlers for the field input.\n */\n\nimport { aria } from '@core/input-engine/core/accessibility/arias'\nimport { DomRegisterBuilder } from '@core/input-engine/core/dom-registers-builder/dom-registers-builder'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\n\n/**\n * Registers event handlers and ARIA attributes for a field input component.\n * This function is intended to be used as part of the `IFieldInput` interface implementation.\n *\n * @template FieldValuesTypes - The type of the field values.\n * @this IFieldInput - The context of the field input instance.\n *\n * @returns An object containing the field's attributes and event handlers:\n * - `id`: The unique identifier for the field.\n * - `type`: The type of the input field (e.g., \"text\", \"checkbox\", \"radio\").\n * - `className`: The computed class names for the field.\n * - `label`: The label associated with the field.\n * - `onChange`: Event handler for the `change` event.\n * - `onBlur`: Event handler for the `blur` event.\n * - `onFocus`: Event handler for the `focus` event.\n * - `onClick`: Event handler for the `click` event.\n *\n * @remarks\n * - The function updates the UI state and triggers observers when events occur.\n * - It manages field states such as `pristine`, `dirty`, and `focus`.\n * - ARIA attributes (`aria-labelledby` and `name`) are set for accessibility compliance.\n *\n * @example\n * ```typescript\n * const fieldInput = new FieldInput();\n * const registeredField = fieldInput.register();\n *\n * <input\n *   id={registeredField.id}\n *   type={registeredField.type}\n *   className={registeredField.className}\n *   onChange={registeredField.onChange}\n *   onBlur={registeredField.onBlur}\n *   onFocus={registeredField.onFocus}\n *   onClick={registeredField.onClick}\n * />\n *  or simply\n *  <input {...field?.register()}  ref={field?.ref()} ...\n * />\n * ```\n */\nexport const register = function <FieldValuesTypes>(\n    this: IExtendedInput\n): Partial<HTMLInputElement> {\n    const lableId = `${this.input.id}${this.input.labelId}`\n    const describedbyId = `${this.input.id}${this.input.describedById}`\n\n    const arias = [\n        aria('labelledby', lableId),\n        aria('describedby', describedbyId),\n        aria('name', this.input.name),\n        aria('label', this.input.name),\n        aria('required', this.input.validationOptions?.required?.value ? 'true' : 'false'),\n        aria('invalid', this.input.isValid ? 'false' : 'true'),\n        aria('disabled', this.input.enabled ? 'false' : 'true'),\n        aria('readonly', 'false'),\n        aria('autocomplete', 'none'),\n        aria('haspopup', 'false'),\n        aria('expanded', 'false'),\n        aria('activedescendant', 'false')\n    ]\n\n    return new DomRegisterBuilder(this).registerAria(...arias).build()\n}\n","/**\n * Registers a label click handler for a field input component.\n *\n * @param this - The current instance of the field input implementing `IFieldInput`.\n * @param refHtmlFor - A React ref object pointing to the associated HTML input element.\n * @returns An object containing the `onClick` event handler for the label.\n *\n * The `onClick` handler performs the following actions:\n * - Updates the `value` of the field input with the current value of the associated input element.\n * - Sets the `checked` property of the associated input element to `true`.\n * - Updates the field's state style to \"dirty\" if the current value differs from the original value.\n * - Notifies observers of a \"clicked\" event with the field's name and an \"onChange\" action.\n * - Triggers all registered observers.\n * - Stops the propagation of the click event.\n */\n\nimport { IOptionItem } from '@core/framework/schema/option-schema/options.scheme.types'\nimport { DomRegisterBuilder } from '@core/input-engine/core/dom-registers-builder/dom-registers-builder'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\n\n/** NEED TO BE MOVED TO RADIO KIND CONTROL */\nexport const registerLabel = function (\n    this: IExtendedInput,\n    option: IOptionItem\n): Partial<HTMLInputElement> {\n    return new DomRegisterBuilder(this)\n        .registerClickOption(String(option.id!))\n        .registerAria()\n        .buildLabel(option)\n}\n","import { IOptionItem } from '@core/framework/schema/option-schema/options.scheme.types'\nimport { DomRegisterBuilder } from '@core/input-engine/core/dom-registers-builder/dom-registers-builder'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\n\n/**\n * Registers event handlers for a field's children options input components\n *\n * This function provides event handlers for `onClick`, `onBlur`, and `onFocus` events\n * to manage the state and behavior of a field input. It updates the UI, triggers observers,\n * and notifies listeners about specific events.\n *\n * @this IFieldInput - The field input instance on which the event handlers operate.\n *\n * @returns An object containing the following event handlers:\n *\n * - `onClick`: Handles click events on the input element. Updates the value, triggers\n *   observers, and notifies listeners about the \"clicked\" event.\n *\n * - `onBlur`: Handles blur events on the input element. Updates the focus state,\n *   triggers observers, and notifies listeners about the \"blurred\" event.\n *\n * - `onFocus`: Handles focus events on the input element. Updates the focus state,\n *   triggers observers, and notifies listeners about the \"focused\" event.\n */\nexport const registerOption = function (\n    this: IExtendedInput,\n    option: IOptionItem\n): Partial<HTMLInputElement> {\n    return new DomRegisterBuilder(this)\n        .registerBlur()\n        .registerFocus()\n        .registerClickOption(String(option.id!))\n        .registerAria()\n        .buildOption(option)\n}\n","import { handleOnChanged } from './prototype/handle-on-changed'\nimport { initialize } from './prototype/initialize'\nimport { ref } from './prototype/ref'\nimport { refOption } from './prototype/ref-option'\nimport { register } from './prototype/register'\nimport { registerLabel } from './prototype/register-label'\nimport { registerOption } from './prototype/register-option'\n\nimport { IRadioBaseInput } from './radio-base-input.types'\nexport const RadioBaseInput = function (this: IRadioBaseInput) {\n    this.isInitialized = false\n\n    Object.defineProperty(this, 'dependencyName', {\n        value: RadioBaseInput.name,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n} as any as IRadioBaseInput\n\nObject.assign(RadioBaseInput.prototype, {\n    initialize,\n    handleOnChanged,\n    ref,\n    register,\n    refOption,\n    registerOption,\n    registerLabel\n})\n","import { InputDataTypes } from '@core/framework/common/common.input.data.types'\nimport { IEvents } from '@core/framework/events/events.types'\nimport { IOptionItem } from '@core/framework/schema/option-schema/options.scheme.types'\n\nimport { ICustomHandler } from '@core/input-engine/core/dom-registers-builder/dom-registers-builder.type'\nimport { IExtendedInputBase } from '@core/input-engine/core/input-base/input-base.types'\nimport { IClickBaseInput } from '../click-base/click-base-input.types'\nimport { IOptionBaseInput } from '../option-based/option-base-input.types'\n\nexport const SRadioBaseInput = Symbol.for('IRadioBaseInput')\n\nexport interface IRadioBaseInputProperties {\n    optionBase: IOptionBaseInput\n    clickBase: IClickBaseInput\n}\n\nexport interface IRadioBaseInput extends IRadioBaseInputProperties, IExtendedInputBase {\n    new (): IRadioBaseInput\n\n    handleOnChanged: <T extends IEvents>(data?: T) => void\n\n    ref: (ref: HTMLInputElement | null) => void\n    register: (...customHandlers: ICustomHandler[]) => any\n\n    refOption: (ref: HTMLInputElement | null) => void\n    registerOption: (option: IOptionItem) => any\n    registerLabel: (option: IOptionItem) => any\n\n    setValue: (value: InputDataTypes) => void\n    getValue: () => InputDataTypes\n}\n","import { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\n\n/**\n * Clears the state and value of the field input, resetting it to its initial state.\n *\n * This method performs the following actions:\n * - Clears the `errors` and `guides` arrays.\n * - Resets the `checked` property of all associated internal HTML input element references.\n * - Notifies listeners about the `validate` and `changed` events with the appropriate field state.\n * - Updates the field's state style to reflect the \"clear\" action.\n * - Sets the field's value to `null`.\n * - Focuses the field input.\n * - Resets the `value` and `checked` properties of the main internal HTML input element reference, if it exists.\n *\n * @this IInput - The field input instance on which the method is called.\n */\nexport const clear = function (this: IExtendedInput) {\n    this.input.valueManager.setValue(this, null)\n    this.input.clear()\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { onChangedHandle } from '@core/input-engine/core/input-base/events/on-changed-handle'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { ISelectBaseInput } from '../select-base-input.types'\n\n/**\n * Handles the change event for a field input.\n *\n * @this IFieldInput - The context of the field input instance.\n * @param data - Optional parameter representing the new data or value associated with the change event.\n *\n * Logs the updated value and the provided data to the console.\n */\nexport const handleOnChanged = function <T extends IEvents>(this: ISelectBaseInput, data?: T) {\n    onChangedHandle(this as unknown as IExtendedInput)\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { onClearHandle } from '@core/input-engine/core/input-base/events/on-clear-handle'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { ISelectBaseInput } from '../select-base-input.types'\n\n/**\n * Handles the change event for a field input.\n *\n * @this IFieldInput - The context of the field input instance.\n * @param data - Optional parameter representing the new data or value associated with the change event.\n *\n * Logs the updated value and the provided data to the console.\n */\nexport const handleOnClear = function <T extends IEvents>(this: ISelectBaseInput, data?: T) {\n    onClearHandle(this as unknown as IExtendedInput)\n}\n","import { newEvent } from '@core/framework/events/new-event'\n\nimport { IExtendedInput } from '../input-base.types'\n\nexport const onSelectHandle = (f: IExtendedInput) => {\n    if (!f.input.validationManager?.triggerKeyWordType.includes('onSelect')) return\n    // console.log('onSelectHandle', f.name, f.value)\n    f.input.notificationManager?.debounceNotify(\n        'onValidate',\n        f.input.onValidateDelay,\n        newEvent(\n            f.input.name,\n            onSelectHandle.name,\n            'onValidate',\n            `field.state.${onSelectHandle.name}`,\n            f.input.name,\n            f\n        ),\n        String(f.input.id)\n    )\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { onSelectHandle } from '@core/input-engine/core/input-base/events/on-select-handle'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { ISelectBaseInput } from '../select-base-input.types'\n\n/**\n * Handles the event when a value is selected.\n *\n * @this IFieldInput - The context in which this function is executed.\n * @param data - Optional parameter representing the selected data.\n * Logs the selected value, the provided data, and the current value of the field input.\n */\nexport const handleOnSelected = function <T extends IEvents>(this: ISelectBaseInput, data?: T) {\n    onSelectHandle(this as unknown as IExtendedInput)\n}\n","import { ExceptionManager, newAssert } from '@core/framework/exceptions/exception-manager'\n\nimport { abstractInitializer } from '@core/input-engine/core/abstract/abstract-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { notification } from '@core/managers/notification-manager/utils/new-notification-visitor'\nimport { ISelectBaseInput } from '../select-base-input.types'\n/**\n * The setup function sets up the field input by subscribing to observers.\n * basic configuration for styles and validation\n */\nexport const initialize = async function (this: ISelectBaseInput) {\n    try {\n        const success = await abstractInitializer(this.input, () => {}, [\n            notification(this, this.handleOnChanged, 'onChange', 'onChange', this.name),\n            notification(this, this.handleOnSelected, 'onSelect', 'onSelect', this.name),\n            notification(this, this.handleOnClear, 'onClear', 'onClear', this.name)\n        ])\n\n        if (success) {\n            const em = new ExceptionManager(\n                ...[\n                    newAssert(this.input !== undefined, `The dependency field is not instanciated`),\n                    newAssert(\n                        this.input.isInitialized,\n                        `${this.dependencyName}:  The dependency field is not properly initialized`\n                    ),\n                    newAssert(\n                        this.optionBase?.options?.length > 0,\n                        `${this.dependencyName}: The needed dependency on OptionBase is not properly initialized or none options were provided.`\n                    ),\n                    newAssert(\n                        this.optionBase?.isInitialized,\n                        `${this.dependencyName}: The this.optionBase is not properly initialized`\n                    ),\n                    newAssert(\n                        this.clickBase?.isInitialized,\n                        `${this.dependencyName}: The this.clickBase is not properly initialized`\n                    )\n                ]\n            )\n            em.process()\n            if (em.hasErrors()) {\n                logManager(undefined, 'critical', 'initialize', em.toString())\n            } else {\n                this.isInitialized = true\n            }\n        }\n    } catch (e: any) {\n        logManager(this.input.trackingManager, 'critical', this.dependencyName, e)\n    }\n}\n","import { IOptionItem } from '@core/framework/schema/option-schema/options.scheme.types'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\n\n/**\n * Handles the selection of an item in a field input component.\n *\n * @param this - The current instance of the field input implementing `IFieldInput`.\n * @param option - The selected option item containing `id` and `text` properties.\n *\n * @remarks\n * - Updates the `value` of the field input based on the `id` of the selected option.\n * - Updates the internal HTML element's value and focuses it if the reference exists.\n * - Closes the dropdown by setting the `openState` to `'closed'`.\n * - Notifies observers of the `changed` event with the field name and state.\n * - Notifies observers of the `validate` event to reset validation state.\n */\nexport const onSelectItem = function (this: IExtendedInput, option: IOptionItem) {\n    if (!this.input.domManager?.dmExists(this.input.id.toString())) {\n        return\n    }\n    this.input.valueManager.setValue(this, option.value)\n    if (this.input?.drawer) this.input.drawer!.openState = 'closed'\n}\n","import { referencer } from '@core/input-engine/core/referencers/referencer'\nimport { ISelectBaseInput } from '../select-base-input.types'\n\nexport const ref = function (this: ISelectBaseInput, ref: HTMLInputElement | null) {\n    referencer(this.input, ref)\n}\n","/**\n * The register function is used to register the event handlers for the field input.\n */\n\nimport { aria } from '@core/input-engine/core/accessibility/arias'\nimport { DomRegisterBuilder } from '@core/input-engine/core/dom-registers-builder/dom-registers-builder'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\n\n/**\n * Registers event handlers and ARIA attributes for a field input component.\n * This function is intended to be used as part of the `IFieldInput` interface implementation.\n *\n * @template FieldValuesTypes - The type of the field values.\n * @this IFieldInput - The context of the field input instance.\n *\n * @returns An object containing the field's attributes and event handlers:\n * - `id`: The unique identifier for the field.\n * - `type`: The type of the input field (e.g., \"text\", \"checkbox\", \"radio\").\n * - `className`: The computed class names for the field.\n * - `label`: The label associated with the field.\n * - `onChange`: Event handler for the `change` event.\n * - `onBlur`: Event handler for the `blur` event.\n * - `onFocus`: Event handler for the `focus` event.\n * - `onClick`: Event handler for the `click` event.\n *\n * @remarks\n * - The function updates the UI state and triggers observers when events occur.\n * - It manages field states such as `pristine`, `dirty`, and `focus`.\n * - ARIA attributes (`aria-labelledby` and `name`) are set for accessibility compliance.\n *\n * @example\n * ```typescript\n * const fieldInput = new FieldInput();\n * const registeredField = fieldInput.register();\n *\n * <input\n *   id={registeredField.id}\n *   type={registeredField.type}\n *   className={registeredField.className}\n *   onChange={registeredField.onChange}\n *   onBlur={registeredField.onBlur}\n *   onFocus={registeredField.onFocus}\n *   onClick={registeredField.onClick}\n * />\n *  or simply\n *  <input {...field?.register()}  ref={field?.ref()} ...\n * />\n * ```\n */\nexport const register = function <FieldValuesTypes>(\n    this: IExtendedInput\n): Partial<HTMLInputElement> {\n    const lableId = `${this.input.id}${this.input.labelId}`\n    const describedbyId = `${this.input.id}${this.input.describedById}`\n\n    const arias = [\n        aria('labelledby', lableId),\n        aria('describedby', describedbyId),\n        aria('name', this.input.name),\n        aria('label', this.input.name),\n        aria('required', this.input.validationOptions?.required?.value ? 'true' : 'false'),\n        aria('invalid', this.input.isValid ? 'false' : 'true'),\n        aria('disabled', this.input.enabled ? 'false' : 'true'),\n        aria('readonly', 'false'),\n        aria('autocomplete', 'none'),\n        aria('haspopup', 'false'),\n        aria('expanded', 'false'),\n        aria('activedescendant', 'false')\n    ]\n\n    return new DomRegisterBuilder(this)\n        .registerChange()\n        .registerBlur()\n        .registerFocus()\n        .registerAria(...arias)\n        .build()\n}\n","import { ISelectBaseInput } from './select-base-input.types'\n\nimport { clear } from './prototype/clear'\nimport { handleOnChanged } from './prototype/handle-on-changed'\nimport { handleOnClear } from './prototype/handle-on-clear'\nimport { handleOnSelected } from './prototype/handle-on-selected'\nimport { initialize } from './prototype/initialize'\nimport { onSelectItem } from './prototype/on-select-item'\nimport { ref } from './prototype/ref'\nimport { register } from './prototype/register'\n\nexport const SelectBaseInput = function (this: ISelectBaseInput) {\n    this.isInitialized = false\n\n    Object.defineProperty(this, 'dependencyName', {\n        value: SelectBaseInput.name,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n} as any as ISelectBaseInput\n\nObject.assign(SelectBaseInput.prototype, {\n    initialize,\n    handleOnChanged,\n    handleOnSelected,\n    handleOnClear,\n    clear,\n    ref,\n    register,\n    onSelectItem\n})\n","import { InputDataTypes } from '@core/framework/common/common.input.data.types'\nimport { IEvents } from '@core/framework/events/events.types'\nimport { IOptionItem } from '@core/framework/schema/option-schema/options.scheme.types'\n\nimport { ICustomHandler } from '@core/input-engine/core/dom-registers-builder/dom-registers-builder.type'\nimport { IExtendedInputBase } from '@core/input-engine/core/input-base/input-base.types'\nimport { IClickBaseInput } from '../click-base/click-base-input.types'\nimport { IOptionBaseInput } from '../option-based/option-base-input.types'\n\nexport const SSelectBaseInput = Symbol.for('ISelectBaseInput')\n\nexport interface ISelectBaseInputProperties {\n    optionBase: IOptionBaseInput\n    clickBase: IClickBaseInput\n}\n\nexport interface ISelectBaseInput extends ISelectBaseInputProperties, IExtendedInputBase {\n    new (): ISelectBaseInput\n\n    handleOnChanged: <T extends IEvents>(data?: T) => void\n    handleOnSelected: <T extends IEvents>(data?: T) => void\n    handleOnClear: <T extends IEvents>(data?: T) => void\n\n    ref: (ref: HTMLInputElement | null) => void\n    register: (...customHandlers: ICustomHandler[]) => Partial<HTMLInputElement>\n\n    clear: () => void\n\n    onSelectItem: (option: IOptionItem) => void\n    setValue: (value: InputDataTypes | null) => void\n    getValue: () => InputDataTypes\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { onChangedHandle } from '@core/input-engine/core/input-base/events/on-changed-handle'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { ITextBaseInput } from '../text-base-input.types'\n\n/**\n * Handles the change event for a field input.\n *\n * @this IFieldInput - The context of the field input instance.\n * @param data - Optional parameter representing the new data or value associated with the change event.\n *\n * Logs the updated value and the provided data to the console.\n */\nexport const handleOnChanged = function <T extends IEvents>(this: ITextBaseInput, data?: T) {\n    onChangedHandle(this as unknown as IExtendedInput)\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { onClearHandle } from '@core/input-engine/core/input-base/events/on-clear-handle'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { ITextBaseInput } from '../text-base-input.types'\n\n/**\n * Handles the change event for a field input.\n *\n * @this IFieldInput - The context of the field input instance.\n * @param data - Optional parameter representing the new data or value associated with the change event.\n *\n * Logs the updated value and the provided data to the console.\n */\nexport const handleOnClear = function <T extends IEvents>(this: ITextBaseInput, data?: T) {\n    onClearHandle(this as unknown as IExtendedInput)\n}\n","import { ExceptionManager, newAssert } from '@core/framework/exceptions/exception-manager'\nimport { abstractInitializer } from '@core/input-engine/core/abstract/abstract-initializer'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { notification } from '@core/managers/notification-manager/utils/new-notification-visitor'\n\n/**\n * The setup function sets up the field input by subscribing to observers.\n * basic configuration for styles and validation\n */\nexport const initialize = async function (this: IExtendedInput) {\n    try {\n        const success = await abstractInitializer(this.input, () => {}, [\n            notification(this, this.handleOnChanged, 'onChange', 'onChange', this.name),\n            notification(this, this.handleOnClear, 'onClear', 'onClear', this.name)\n        ])\n\n        if (success) {\n            const em = new ExceptionManager(\n                ...[\n                    newAssert(this.input !== undefined, `The dependency field is not instanciated`),\n                    newAssert(\n                        this.input.isInitialized,\n                        `${this.dependencyName}: The dependency field is not properly initialized`\n                    )\n                ]\n            )\n            em.process()\n            if (em.hasErrors()) {\n                logManager(undefined, 'critical', 'initialize', em.toString())\n            } else {\n                this.isInitialized = true\n            }\n        }\n    } catch (e: any) {\n        logManager(this.input.trackingManager, 'critical', this.dependencyName, e)\n    }\n}\n","import { referencer } from '@core/input-engine/core/referencers/referencer'\nimport { ITextBaseInput } from '../text-base-input.types'\n\nexport const ref = function (this: ITextBaseInput, ref: HTMLInputElement | null) {\n    if (this.input) {\n        referencer(this.input, ref)\n    } else {\n        console.log('---ISSUE')\n    }\n}\n","/**\n * The register function is used to register the event handlers for the field input.\n */\n\nimport { aria } from '@core/input-engine/core/accessibility/arias'\nimport { DomRegisterBuilder } from '@core/input-engine/core/dom-registers-builder/dom-registers-builder'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\n\n/**\n * Registers event handlers and ARIA attributes for a field input component.\n * This function is intended to be used as part of the `IFieldInput` interface implementation.\n *\n * @template FieldValuesTypes - The type of the field values.\n * @this IFieldInput - The context of the field input instance.\n *\n * @returns An object containing the field's attributes and event handlers:\n * - `id`: The unique identifier for the field.\n * - `type`: The type of the input field (e.g., \"text\", \"checkbox\", \"radio\").\n * - `className`: The computed class names for the field.\n * - `label`: The label associated with the field.\n * - `onChange`: Event handler for the `change` event.\n * - `onBlur`: Event handler for the `blur` event.\n * - `onFocus`: Event handler for the `focus` event.\n * - `onClick`: Event handler for the `click` event.\n *\n * @remarks\n * - The function updates the UI state and triggers observers when events occur.\n * - It manages field states such as `pristine`, `dirty`, and `focus`.\n * - ARIA attributes (`aria-labelledby` and `name`) are set for accessibility compliance.\n *\n * @example\n * ```typescript\n * const fieldInput = new FieldInput();\n * const registeredField = fieldInput.register();\n *\n * <input\n *   id={registeredField.id}\n *   type={registeredField.type}\n *   className={registeredField.className}\n *   onChange={registeredField.onChange}\n *   onBlur={registeredField.onBlur}\n *   onFocus={registeredField.onFocus}\n *   onClick={registeredField.onClick}\n * />\n *  or simply\n *  <input {...field?.register()}  ref={field?.ref()} ...\n * />\n * ```\n */\nexport const register = function <FieldValuesTypes>(\n    this: IExtendedInput\n): Partial<HTMLInputElement> {\n    // Use just the id for aria-labelledby and aria-describedby\n    const labelId = `${this.input.id}`\n    const describedbyId = `${this.input.id}`\n\n    const arias = [\n        aria('labelledby', labelId),\n        aria('describedby', describedbyId),\n        aria('name', this.input.name),\n        aria('label', this.input.name),\n        aria('required', this.input.validationOptions?.required?.value ? 'true' : 'false'),\n        aria('invalid', this.input.isValid ? 'false' : 'true'),\n        aria('disabled', this.input.enabled ? 'false' : 'true'),\n        aria('readonly', 'false'),\n        aria('autocomplete', 'off'),\n        aria('haspopup', 'false'),\n        aria('expanded', 'false'),\n        aria('activedescendant', 'false')\n    ]\n\n    return new DomRegisterBuilder(this)\n        .registerChange()\n        .registerBlur()\n        .registerFocus()\n        .registerAria(...arias)\n        .build()\n}\n","import { handleOnChanged } from './prototype/handle-on-changed'\nimport { handleOnClear } from './prototype/handle-on-clear'\nimport { initialize } from './prototype/initialize'\nimport { ref } from './prototype/ref'\nimport { register } from './prototype/register'\nimport { ITextBaseInput } from './text-base-input.types'\n\nexport const TextBaseInput = function (this: ITextBaseInput) {\n    this.isInitialized = false\n\n    Object.defineProperty(this, 'dependencyName', {\n        value: TextBaseInput.name,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n} as any as ITextBaseInput\n\nObject.assign(TextBaseInput.prototype, {\n    initialize,\n    handleOnChanged,\n    handleOnClear,\n    ref,\n    register\n})\n","import { InputDataTypes } from '@core/framework/common/common.input.data.types'\nimport { IEvents } from '@core/framework/events/events.types'\nimport { ICustomHandler } from '@core/input-engine/core/dom-registers-builder/dom-registers-builder.type'\n\nimport { IExtendedInputBase } from '@core/input-engine/core/input-base/input-base.types'\n\nexport const STextBaseInput = Symbol.for('ITextBaseInput')\n\nexport interface ITextBaseInput extends IExtendedInputBase {\n    new (): ITextBaseInput\n    ref: (ref: HTMLInputElement | null) => void\n    register: (...customHandlers: ICustomHandler[]) => any\n    setValue: (value: InputDataTypes) => void\n    getValue: () => InputDataTypes\n    handleOnChanged: <T extends IEvents>(data?: T) => void\n    handleOnClear: <T extends IEvents>(data?: T) => void\n}\n","export enum NotificationPriorityEnum {\n    /** Low priority - processed last */\n    LOW = 0,\n    /** Normal priority - default priority level */\n    NORMAL = 1,\n    /** High priority - processed before normal and low */\n    HIGH = 2,\n    /** Critical priority - processed first */\n    CRITICAL = 3\n}\n","import { IEvents } from '@core/framework/events/events.types'\nimport { IValidationResult } from '../validation-manager/validation-manager.types'\nimport { NotificationPriorityEnum } from './enums/notification-priority.enum'\nimport type { IBatchConfig } from './interfaces/i-batch-config'\nimport type { IPriorityNotification } from './interfaces/i-priority-notification'\n\n// Re-export from refactored files\nexport { NotificationPriorityEnum } from './enums/notification-priority.enum'\nexport type { IBatchConfig } from './interfaces/i-batch-config'\nexport type { INotification } from './interfaces/i-notification'\nexport type { IPriorityNotification } from './interfaces/i-priority-notification'\nexport type { DataStrategyResultAsyncType } from './types/data-strategy-result-async.type'\nexport type { NotificationStrategyType } from './types/notification-strategy.type'\nexport type { TNotificationMethodAsyncType } from './types/t-notification-method-async.type'\nexport type { TNotificationMethodType } from './types/t-notification-method.type'\n\n// Backward compatibility aliases\nexport type dataStrategyResultAsyncType = (data: IEvents) => Promise<IValidationResult>\nexport type TNotificationMethod<T = any> = (data?: T) => void\nexport type TNotificationMethodAsnyc<T = Array<dataStrategyResultAsyncType>> = (data?: T) => void\nexport const NotificationPriority = NotificationPriorityEnum\nexport type PriorityNotification = IPriorityNotification\nexport type BatchConfig = IBatchConfig\n\nexport const SNotificationManager = Symbol.for('INotificationManager')\nexport const SAutoTrackerNotificationManager = Symbol.for('SAutoTrackerNotificationManager')\n","export const SServiceManager = Symbol.for('IServiceManager')\n\nexport type ServiceLifeCycleType = 'singleton' | 'transient' | 'scoped'\n\nexport type ServiceIdType<T = any> = null | string | symbol | (new (...args: any[]) => T)\n\nexport type ServiceFactoryType<T = any> = (container: IServiceManager, ...parameters: any[]) => T\n\n/**\n * Descriptor interface for service registration in the IoC container.\n *\n * @template T - The type of service being described\n */\nexport interface IServiceDescriptor<T = any> {\n    /** Unique identifier for the service (symbol, string, or constructor) */\n    identifier: ServiceIdType<T>\n    /** Factory function that creates instances of the service */\n    factory: ServiceFactoryType<T>\n    /** Lifecycle management strategy for the service */\n    lifetime: ServiceLifeCycleType\n    /** Optional array of dependency identifiers that this service depends on */\n    dependencies?: ServiceIdType[]\n}\n\n/**\n * Options interface for service registration.\n */\nexport interface IServiceOptions {\n    /** Lifecycle management strategy (default: 'transient') */\n    lifetime?: ServiceLifeCycleType\n    /** Dependencies required by this service */\n    dependencies?: ServiceIdType[]\n}\n\n/**\n * Interface for services that require cleanup when disposed.\n *\n * Services implementing this interface will have their dispose method\n * called when the service container is disposed.\n */\nexport interface IDisposableService {\n    /** Cleanup method called during service disposal */\n    dispose(): void\n}\n\n/**\n * Main interface for the dependency injection container.\n *\n * The ServiceManager provides comprehensive IoC functionality including:\n * - Service registration with different lifecycles (singleton, transient, scoped)\n * - Dependency resolution with circular dependency detection\n * - Lazy resolution for performance optimization\n * - Hierarchical containers with parent-child relationships\n * - Resource cleanup and disposal\n * - Development-time validation and debugging tools\n *\n * @example\n * ```typescript\n * // Create a service manager\n * const container = new ServiceManager();\n *\n * // Register services\n * container.registerClass(SUserService, UserService, {\n *   lifetime: 'singleton',\n *   dependencies: [SDataService, SLogService]\n * });\n *\n * // Resolve services\n * const userService = container.resolve<IUserService>(SUserService);\n *\n * // Lazy resolution for performance\n * const lazyUserService = container.lazy<IUserService>(SUserService);\n * const service = lazyUserService(); // Resolved only when called\n * ```\n */\nexport interface IServiceManager {\n    /**\n     * Constructor for creating a new ServiceManager instance\n     * @param parent - Optional parent container for hierarchical IoC\n     */\n    new (parent?: IServiceManager): IServiceManager\n\n    /** Stack tracking current resolution chain for circular dependency detection */\n    readonly resolutionStack: Set<ServiceIdType>\n    /** Map of all registered service descriptors */\n    readonly services: Map<ServiceIdType, IServiceDescriptor>\n    /** Cache of singleton instances */\n    readonly singletonInstances: Map<ServiceIdType, any>\n    /** Cache of scoped instances for the current scope */\n    readonly scopedInstances: Map<ServiceIdType, any>\n    /** Optional parent container for hierarchical resolution */\n    readonly parent?: IServiceManager\n    /** Flag indicating if this container has been disposed */\n    isDisposed: boolean\n\n    /**\n     * Registers a service using a factory function\n     * @param identifier - Unique identifier for the service\n     * @param factory - Function that creates instances of the service\n     * @param options - Registration options (lifetime, dependencies)\n     * @returns The service manager for method chaining\n     */\n    register: <T>(\n        identifier: ServiceIdType<T>,\n        factory: ServiceFactoryType<T>,\n        options?: IServiceOptions\n    ) => IServiceManager\n\n    /**\n     * Registers a service using a constructor class\n     * @param identifier - Unique identifier for the service\n     * @param constructor - Constructor function for the service\n     * @param options - Registration options (lifetime, dependencies)\n     * @returns The service manager for method chaining\n     */\n    registerClass<T>(\n        identifier: ServiceIdType<T>,\n        constructor: new (...args: any[]) => T,\n        options?: IServiceOptions\n    ): IServiceManager\n\n    /**\n     * Validates that no circular dependencies exist in the container\n     * @throws Error if circular dependencies are detected\n     */\n    validateNoCycles: () => void\n\n    /**\n     * Registers a pre-created instance as a singleton\n     * @param identifier - Unique identifier for the service\n     * @param instance - Pre-created instance to register\n     * @returns The service manager for method chaining\n     */\n    registerInstance: <T>(identifier: ServiceIdType<T>, instance: T) => IServiceManager\n\n    /**\n     * Resolves a service instance immediately\n     * @param identifier - Unique identifier for the service\n     * @param parameters - Additional parameters to pass to the factory\n     * @returns Resolved service instance\n     * @throws Error if service cannot be resolved\n     */\n    resolve: <T>(identifier: ServiceIdType<T>, ...parameters: any[]) => T\n    /**\n     * Attempts to resolve a service, returning undefined if not found\n     * @param identifier - Unique identifier for the service\n     * @param parameters - Additional parameters to pass to the factory\n     * @returns Resolved service instance or undefined\n     */\n    tryResolve: <T>(identifier: ServiceIdType<T>, ...parameters: any[]) => T | undefined\n\n    /**\n     * Creates a lazy resolver function for a service\n     *\n     * The lazy resolver allows deferred service instantiation - the service\n     * is only created when the returned function is first called, and then\n     * cached for subsequent calls.\n     *\n     * @param identifier - Unique identifier for the service\n     * @param parameters - Additional parameters to pass to the factory\n     * @returns Function that resolves the service when called\n     *\n     * @example\n     * ```typescript\n     * const lazyUserService = container.lazy<IUserService>(SUserService);\n     *\n     * // Service is not created yet\n     * const userService = lazyUserService(); // Service created here\n     * const sameService = lazyUserService(); // Returns cached instance\n     * ```\n     */\n    lazy: <T>(identifier: ServiceIdType<T>, ...parameters: any[]) => () => T\n\n    /**\n     * Checks if a service is registered in the container\n     * @param identifier - Unique identifier for the service\n     * @returns True if the service is registered, false otherwise\n     */\n    isRegistered: <T>(identifier: ServiceIdType<T>) => boolean\n\n    /**\n     * Gets a human-readable name for a service identifier\n     * @param identifier - Service identifier to get name for\n     * @returns Human-readable service name\n     */\n    getServiceName: (identifier: ServiceIdType) => string\n\n    /**\n     * Gets a list of all registered service identifiers\n     * @returns Array of service identifiers\n     */\n    getRegisteredServices: () => ServiceIdType[]\n\n    /**\n     * Throws an error if the service manager has been disposed\n     * @throws Error if the service manager is disposed\n     */\n    throwIfDisposed: () => void\n\n    /**\n     * Creates a new child scope for resolving services\n     *\n     * Scopes are used to create nested containers with their own\n     * lifetimes and resolutions, useful for things like request-scoped\n     * services in a web application.\n     *\n     * @example\n     * ```typescript\n     * const requestScope = container.createScope();\n     *\n     * requestScope.registerClass(SRequestService, RequestService);\n     *\n     * const requestService = requestScope.resolve<IRequestService>(SRequestService);\n     * ```\n     */\n    createScope: () => IServiceManager\n\n    /**\n     * Finds the service descriptor for a given identifier\n     * @param identifier - Unique identifier for the service\n     * @returns The service descriptor, or undefined if not found\n     */\n    findServiceDescriptor: <T>(identifier: ServiceIdType<T>) => IServiceDescriptor | undefined\n\n    /**\n     * Disposes the service manager, releasing all resources\n     *\n     * This will call dispose on all registered services that implement\n     * IDisposableService, and will recursively dispose of all child scopes.\n     */\n    dispose: () => void\n}\n","import { IInitializableDependency } from '../initialization-manager/initialization-manager.types'\n\nexport const STrackingManager = Symbol.for('ITrackingManager')\nexport const STrackingOutputProvider = Symbol.for('ITrackingOutputProvider')\n\nexport type TrackingType = 'warning' | 'info' | 'error' | 'critical'\n\nexport interface ITrackingOutputProvider {\n    new (): ITrackingOutputProvider\n    id: string\n    funcAll: (data: ITrackingData[]) => void\n    func: (data: ITrackingData) => void\n}\n\nexport interface ITrackingData {\n    id: string\n    ts: string\n    type: TrackingType\n    source: string\n    message: string\n}\n\nexport const newDtId = (dts: ITrackingData[]) => {\n    const newId = dts.length + 1\n    return newId.toString().padStart(10, '0')\n}\n\nexport const newTrackingData = (\n    id: string,\n    type: TrackingType,\n    source: string,\n    message: string\n) => {\n    const currentTimestamp = new Date().toISOString()\n    return {\n        id,\n        ts: currentTimestamp,\n        type,\n        source,\n        message\n    }\n}\n\nexport interface ITrackingManager extends IInitializableDependency {\n    new (providers?: ITrackingOutputProvider[]): ITrackingManager\n    _trackingData: ITrackingData[]\n    _trackingIsActive: boolean\n    _outputProviders: ITrackingOutputProvider[]\n    setTrackingActive: (active: boolean) => void\n    getTrackingDate: () => ITrackingData[]\n    addProviders: (providers?: ITrackingOutputProvider[]) => void\n    internalCritical: (source: string, message: string) => void\n    internalError: (source: string, message: string) => void\n    internalWarning: (source: string, message: string) => void\n    internalInfo: (source: string, message: string) => void\n    print: (data: ITrackingData) => void\n    printAll: () => void\n}\n","import { InputBase } from '@core/input-engine/core/input-base/input-base'\nimport { SInputBase } from '@core/input-engine/core/input-base/input-base.types'\nimport { CheckBoxInput } from '@core/input-engine/variants/check-box-base/check-box-base-input'\nimport { SCheckBoxBaseInput } from '@core/input-engine/variants/check-box-base/check-box-base-input.types'\nimport { ClickBaseInput } from '@core/input-engine/variants/click-base/click-base-input'\nimport { SClickBaseInput } from '@core/input-engine/variants/click-base/click-base-input.types'\nimport { DrawerBaseInput } from '@core/input-engine/variants/drawer-base/drawer-base-input'\nimport { SDrawerBaseInput } from '@core/input-engine/variants/drawer-base/drawer-base-input.types'\nimport { MaskedBaseInput } from '@core/input-engine/variants/masked-base/masked-base-input'\nimport { SMaskedBaseInput } from '@core/input-engine/variants/masked-base/masked-base-input.types'\nimport { NumericBaseInput } from '@core/input-engine/variants/numeric-base/numeric-base-input'\nimport { SNumericBaseInput } from '@core/input-engine/variants/numeric-base/numeric-base-input.types'\nimport { OptionBaseInput } from '@core/input-engine/variants/option-based/option-base-input'\nimport { SOptionBaseInput } from '@core/input-engine/variants/option-based/option-base-input.types'\nimport { RadioBaseInput } from '@core/input-engine/variants/radio-base/radio-base-input'\nimport { SRadioBaseInput } from '@core/input-engine/variants/radio-base/radio-base-input.types'\nimport { SelectBaseInput } from '@core/input-engine/variants/select-base/select-base-input'\nimport { SSelectBaseInput } from '@core/input-engine/variants/select-base/select-base-input.types'\nimport { TextBaseInput } from '@core/input-engine/variants/text-base/text-base-input'\nimport { STextBaseInput } from '@core/input-engine/variants/text-base/text-base-input.types'\nimport { SDomManager } from '@core/managers/dom-manager/dom-manager.types'\nimport { SNotificationManager } from '@core/managers/notification-manager/notification-manager.types'\nimport {\n    IServiceManager,\n    SServiceManager\n} from '@core/managers/service-manager/service-manager.types'\nimport { SStyleManager } from '@core/managers/style-manager/style-manager.types'\nimport { STrackingManager } from '@core/managers/tracking-manager/tracker-manager.types'\nimport { SValidationManager } from '@core/managers/validation-manager/validation-manager.types'\nimport { SValueManager } from '@core/managers/value-manager/value-manager.types'\n\nexport const setupBaseInputClasses = function (sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n\n    // ========================================\n    // PHASE 1: BASE INPUT VARIANTS (No dependencies on other inputs)\n    // ========================================\n\n    // Register base input variants first (they don't depend on each other)\n    sm.registerClass(STextBaseInput, TextBaseInput, {\n        lifetime: 'transient',\n        dependencies: []\n    })\n\n    sm.registerClass(SOptionBaseInput, OptionBaseInput, {\n        lifetime: 'transient',\n        dependencies: []\n    })\n\n    sm.registerClass(SClickBaseInput, ClickBaseInput, {\n        lifetime: 'transient',\n        dependencies: []\n    })\n\n    sm.registerClass(SMaskedBaseInput, MaskedBaseInput, {\n        lifetime: 'transient',\n        dependencies: []\n    })\n\n    sm.registerClass(SRadioBaseInput, RadioBaseInput, {\n        lifetime: 'transient',\n        dependencies: []\n    })\n\n    sm.registerClass(SSelectBaseInput, SelectBaseInput, {\n        lifetime: 'transient',\n        dependencies: []\n    })\n\n    sm.registerClass(SNumericBaseInput, NumericBaseInput, {\n        lifetime: 'transient',\n        dependencies: []\n    })\n\n    sm.registerClass(SDrawerBaseInput, DrawerBaseInput, {\n        lifetime: 'transient',\n        dependencies: []\n    })\n\n    sm.registerClass(SCheckBoxBaseInput, CheckBoxInput, {\n        lifetime: 'transient',\n        dependencies: []\n    })\n\n    // ========================================\n    // PHASE 2: CORE INPUT BASE (Dependencies: Core Managers + Input Variants)\n    // ========================================\n\n    // Register the core InputBase after all variants are registered\n    sm.registerClass(SInputBase, InputBase, {\n        lifetime: 'transient',\n        dependencies: [\n            SServiceManager,\n            SDomManager,\n            SNotificationManager,\n            STrackingManager,\n            SValidationManager,\n            SValueManager,\n            SStyleManager\n        ]\n    })\n}\n","import { ITrackingData, ITrackingOutputProvider } from './tracker-manager.types'\n\nexport const defaultOutputTrackingProvider = function (this: ITrackingOutputProvider) {\n    this.id = 'Console.provider'\n    this.func = function (this: ITrackingOutputProvider, data: ITrackingData) {\n        switch (data.type) {\n            case 'critical':\n                throw new Error(\n                    `Critical: ${data.source} has thrown a critical exception\\n${data.message} `\n                )\n            case 'error':\n                console.error(`Error: ${data.source}\\n${data.message} `)\n                break\n            case 'warning':\n                console.warn(`Warning: ${data.source}\\n${data.message} `)\n                break\n            case 'info':\n            default:\n                if (data.message.includes('unexpected error. p.func is not a function')) {\n                    console.log('p.func')\n                }\n                console.info(`info:${data.source}\\n${data.message} `)\n                break\n        }\n    }\n    this.funcAll = function (this: ITrackingOutputProvider, data: ITrackingData[]) {\n        data?.forEach((d) => {\n            this.func(d)\n        })\n    }\n} as any as ITrackingOutputProvider\n\nexport const consoleTrackingProvider = new defaultOutputTrackingProvider()\n","export const valueIsNullOrUndefined = (value: any): boolean => {\n    return value === null || value === undefined\n}\n","import { valueIsNullOrUndefined } from '@core/framework/utility/value-is-null-or-undefined'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport {\n    IValidationMethodStrategy,\n    newValidationResult,\n    ValidationErrorsCodes\n} from '../validation-manager.types'\n\nconst ValidatorMaxLengthStrategy = function (this: IValidationMethodStrategy) {\n    this.name = ValidatorMaxLengthStrategy.name\n    this.validateAsync = async function (field: IExtendedInput) {\n        return Promise.resolve(this.validate(field))\n    }\n    this.validate = function (field: IExtendedInput) {\n        const name = field.input.name\n        const value = field.input.valueManager.getValue(field)\n\n        if (!field?.input.validationOptions?.maxLength) {\n            return newValidationResult(\n                true,\n                name,\n                ValidationErrorsCodes.maxLength,\n                field.input.validationManager.triggerKeyWordType\n            )\n        }\n\n        const hasValue = !valueIsNullOrUndefined(value)\n\n        if (hasValue && String(value).length > field?.input.validationOptions?.maxLength?.value) {\n            return newValidationResult(\n                false,\n                name,\n                ValidationErrorsCodes.maxLength,\n                field.input.validationManager.triggerKeyWordType,\n                field?.input.validationOptions.maxLength.error?.message ?? undefined,\n                field?.input.validationOptions.maxLength?.guide?.message ?? undefined\n            )\n        }\n\n        return newValidationResult(\n            true,\n            name,\n            ValidationErrorsCodes.maxLength,\n            field.input.validationManager.triggerKeyWordType\n        )\n    }\n} as any as IValidationMethodStrategy\n\nexport const validatorMaxLengthStrategy = new ValidatorMaxLengthStrategy()\n","import { valueIsNullOrUndefined } from '@core/framework/utility/value-is-null-or-undefined'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport {\n    IValidationMethodStrategy,\n    newValidationResult,\n    ValidationErrorsCodes\n} from '../validation-manager.types'\n\nconst ValidatorMaxStrategy = function (this: IValidationMethodStrategy) {\n    this.name = ValidatorMaxStrategy.name\n    this.validateAsync = async function (field: IExtendedInput) {\n        return Promise.resolve(this.validate(field))\n    }\n    this.validate = function (field: IExtendedInput) {\n        const name = field.input.name\n        const value = field.input.valueManager.getValue(field, 'validation')\n        if (!field?.input.validationOptions?.max) {\n            return newValidationResult(\n                true,\n                name,\n                ValidationErrorsCodes.max,\n                field.input.validationManager.triggerKeyWordType\n            )\n        }\n        const hasValue = !valueIsNullOrUndefined(value)\n        if (\n            hasValue &&\n            (isNaN(Number(value)) || Number(value) > field.input.validationOptions.max.value)\n        ) {\n            return newValidationResult(\n                false,\n                name,\n                ValidationErrorsCodes.max,\n                field.input.validationManager.triggerKeyWordType,\n                field.input.validationOptions.max.error?.message ?? undefined,\n                field.input.validationOptions.max?.guide?.message ?? undefined\n            )\n        }\n        return newValidationResult(\n            true,\n            name,\n            ValidationErrorsCodes.max,\n            field.input.validationManager.triggerKeyWordType\n        )\n    }\n} as any as IValidationMethodStrategy\n\nexport const validatorMaxStrategy = new ValidatorMaxStrategy()\n","import { valueIsNullOrUndefined } from '@core/framework/utility/value-is-null-or-undefined'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport {\n    IValidationMethodStrategy,\n    newValidationResult,\n    ValidationErrorsCodes\n} from '../validation-manager.types'\n\nconst ValidatorMinLengthStrategy = function (this: IValidationMethodStrategy) {\n    this.name = ValidatorMinLengthStrategy.name\n    this.validateAsync = async function (field: IExtendedInput) {\n        return Promise.resolve(this.validate(field))\n    }\n    this.validate = function (field: IExtendedInput) {\n        const name = field.input.name\n        const value = field.input.valueManager.getValue(field)\n        if (!field?.input.validationOptions?.minLength) {\n            return newValidationResult(\n                true,\n                name,\n                ValidationErrorsCodes.minLength,\n                field.input.validationManager.triggerKeyWordType\n            )\n        }\n        const hasValue = !valueIsNullOrUndefined(value)\n        if (hasValue && String(value).length < field.input.validationOptions.minLength.value) {\n            return newValidationResult(\n                false,\n                name,\n                ValidationErrorsCodes.minLength,\n                field.input.validationManager.triggerKeyWordType,\n                field.input.validationOptions.minLength.error?.message ?? undefined,\n                field.input.validationOptions.minLength?.guide?.message ?? undefined\n            )\n        }\n        return newValidationResult(\n            true,\n            name,\n            ValidationErrorsCodes.minLength,\n            field.input.validationManager.triggerKeyWordType\n        )\n    }\n} as any as IValidationMethodStrategy\n\nexport const validatorMinLengthStrategy = new ValidatorMinLengthStrategy()\n","import { valueIsNullOrUndefined } from '@core/framework/utility/value-is-null-or-undefined'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport {\n    IValidationMethodStrategy,\n    newValidationResult,\n    ValidationErrorsCodes\n} from '../validation-manager.types'\n\nconst ValidatorMinStrategy = function (this: IValidationMethodStrategy) {\n    this.name = ValidatorMinStrategy.name\n    this.validateAsync = async function (field: IExtendedInput) {\n        return Promise.resolve(this.validate(field))\n    }\n    this.validate = function (field: IExtendedInput) {\n        const name = field.input.name\n        const value = field.input.valueManager.getValue(field, 'validation')\n        if (!field?.input.validationOptions?.min) {\n            return newValidationResult(\n                true,\n                name,\n                ValidationErrorsCodes.min,\n                field.input.validationManager.triggerKeyWordType\n            )\n        }\n        const hasValue = !valueIsNullOrUndefined(value)\n        if (\n            hasValue &&\n            (isNaN(Number(value)) || Number(value) < field.input.validationOptions.min.value)\n        ) {\n            return newValidationResult(\n                false,\n                name,\n                ValidationErrorsCodes.min,\n                field.input.validationManager.triggerKeyWordType,\n                field.input.validationOptions.min.error?.message ?? undefined,\n                field.input.validationOptions.min?.guide?.message ?? undefined\n            )\n        }\n        return newValidationResult(\n            true,\n            name,\n            ValidationErrorsCodes.min,\n            field.input.validationManager.triggerKeyWordType\n        )\n    }\n} as any as IValidationMethodStrategy\n\nexport const validatorMinStrategy = new ValidatorMinStrategy()\n","import { valueIsNullOrUndefined } from '@core/framework/utility/value-is-null-or-undefined'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport {\n    IValidationMethodStrategy,\n    newValidationResult,\n    ValidationErrorsCodes\n} from '../validation-manager.types'\n\nconst ValidatorRequiredStrategy = function (this: IValidationMethodStrategy) {\n    this.name = ValidatorRequiredStrategy.name\n    this.validateAsync = async function (field: IExtendedInput) {\n        return Promise.resolve(this.validate(field))\n    }\n    this.validate = function (field: IExtendedInput) {\n        const name = field.input.name\n        const value = field.input.valueManager.getValue(field)\n        if (!field?.input.validationOptions?.required?.value) {\n            return newValidationResult(\n                true,\n                name,\n                ValidationErrorsCodes.required,\n                field.input.validationManager.triggerKeyWordType\n            )\n        }\n        // Remove expectedValue logic since 'expectedValue' does not exist on IRequired\n        const hasValue = !valueIsNullOrUndefined(value)\n        if (!hasValue) {\n            return newValidationResult(\n                false,\n                name,\n                ValidationErrorsCodes.required,\n                field.input.validationManager.triggerKeyWordType,\n                field.input.validationOptions.required?.error?.message ?? undefined,\n                field.input.validationOptions.required?.guide?.message ?? undefined\n            )\n        }\n        return newValidationResult(\n            true,\n            name,\n            ValidationErrorsCodes.required,\n            field.input.validationManager.triggerKeyWordType\n        )\n    }\n} as any as IValidationMethodStrategy\n\nexport const validatorRequiredStrategy = new ValidatorRequiredStrategy()\n","import { valueIsNullOrUndefined } from '@core/framework/utility/value-is-null-or-undefined'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport {\n    IValidationMethodStrategy,\n    newValidationResult,\n    ValidationErrorsCodes\n} from '../validation-manager.types'\n\nconst ValidatorPatternStrategy = function (this: IValidationMethodStrategy) {\n    this.name = ValidatorPatternStrategy.name\n    this.validateAsync = async function (field: IExtendedInput) {\n        return Promise.resolve(this.validate(field))\n    }\n    this.validate = function (field: IExtendedInput) {\n        const name = field.input.name\n        const value = field.input.valueManager.getValue(field)\n        if (!field?.input.validationOptions?.pattern?.value) {\n            return newValidationResult(\n                true,\n                name,\n                ValidationErrorsCodes.custom,\n                field.input.validationManager.triggerKeyWordType\n            )\n        }\n        const hasValue = !valueIsNullOrUndefined(value)\n        const regexp = new RegExp(field.input.validationOptions.pattern.value)\n        const valueToBeTested = String(value)\n        if (hasValue && !regexp.test(valueToBeTested)) {\n            return newValidationResult(\n                false,\n                name,\n                ValidationErrorsCodes.custom,\n                field.input.validationManager.triggerKeyWordType,\n                field.input.validationOptions.pattern.error?.message ?? undefined,\n                field.input.validationOptions.pattern?.guide?.message ?? undefined\n            )\n        }\n        return newValidationResult(\n            true,\n            name,\n            ValidationErrorsCodes.custom,\n            field.input.validationManager.triggerKeyWordType\n        )\n    }\n} as any as IValidationMethodStrategy\n\nexport const validatorPatternStrategy = new ValidatorPatternStrategy()\n","export enum InputTypesNamesEnum {\n    // BOOLEAN TYPES\n    checkbox = 'checkbox',\n    toggle = 'toggle',\n\n    // STRING TYPES\n    text = 'text',\n    richtext = 'richtext',\n    radio = 'radio',\n    select = 'select',\n\n    // NUMERIC TYPES\n    number = 'number',\n    range = 'range',\n\n    // DATE TYPES\n    date = 'date',\n    time = 'time',\n\n    // SPECIAL TYPES\n    tel = 'tel',\n    email = 'email',\n    url = 'url',\n    password = 'password'\n}\nexport type InputTypeNames = keyof typeof InputTypesNamesEnum\n\nexport const booleanTypes = [InputTypesNamesEnum.checkbox, InputTypesNamesEnum.toggle]\n\nexport const stringTypes = [\n    InputTypesNamesEnum.text,\n    InputTypesNamesEnum.richtext,\n    InputTypesNamesEnum.radio,\n    InputTypesNamesEnum.tel,\n    InputTypesNamesEnum.email,\n    InputTypesNamesEnum.password,\n    InputTypesNamesEnum.url\n]\n\nexport const numberTypes = [InputTypesNamesEnum.number, InputTypesNamesEnum.range]\n\nexport const optionBaseedNumericTypes = [InputTypesNamesEnum.select]\n\nexport const dateTypes = [InputTypesNamesEnum.date, InputTypesNamesEnum.time]\n\nexport type inputTypesConcatType =\n    | typeof booleanTypes\n    | typeof stringTypes\n    | typeof numberTypes\n    | typeof dateTypes\n    | typeof optionBaseedNumericTypes\n","/**\n * Checks if a given boolean is null or undefined.\n *\n * @param value - The boolean to check.\n * @returns True if the boolean is null or undefined, otherwise false.\n */\nexport const isBoolean = (value?: unknown): boolean => typeof value === 'boolean'\n","import { isBoolean } from '@core/framework/utility/is-boolean'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\n\nimport { TGetter, TSetter } from '../value-manager.types'\n\nexport const booleanGetter: TGetter<boolean | null> = (\n    extInput: IExtendedInput\n): boolean | null => {\n    if (extInput.input.value !== null && !isBoolean(extInput.input.value)) {\n        throw new Error(\n            `${booleanGetter.name}: cannot get he value as boolea, is not boolean compatible value: ${JSON.stringify(extInput.input.value)}, field: ${extInput.input?.id}`\n        )\n    }\n    return extInput.input.value as boolean | null\n}\n\nexport const booleanSetter: TSetter<boolean | null> = function (\n    extInput: IExtendedInput,\n    value: boolean | null\n) {\n    if (value !== null && !isBoolean(value)) {\n        throw new Error(\n            `${booleanSetter.name}: cannot set he value as boolea, is not boolean compatible value: ${JSON.stringify(extInput.input?.value)}, field: ${extInput.input?.id}`\n        )\n    }\n    extInput.checked = value ?? false\n    extInput.input.domManager.dmSetChecked(extInput.input.id.toString(), value ?? false)\n    extInput.input.value = value\n}\n","import { booleanTypes } from '@core/framework/common/common.input.types'\nimport { booleanGetter, booleanSetter } from '../parsers/boolean-io'\nimport { setParserStrategy } from '../value-manager.types'\n\nexport const booleanParserStrategy = setParserStrategy(\n    'BooleanParserStrategy',\n    booleanTypes,\n    'checked',\n    booleanSetter,\n    booleanGetter\n)\n","export enum PrimitiveDataTypes {\n    string = 'string',\n    number = 'number',\n    bigint = 'bigint',\n    float = 'float',\n    date = 'date',\n    boolean = 'boolean',\n    symbol = 'symbol',\n    undefined = 'undefined',\n    null = 'null',\n    object = 'object',\n    function = 'function'\n}\n","export enum InputClassStatesValuesEnum {\n    errors = 'errors',\n    no_errors = 'no-errors',\n\n    focus = 'focus',\n    no_focus = 'no-focus',\n\n    open = 'open',\n    no_open = 'no-open',\n\n    enabled = 'enabled',\n    no_enabled = 'no-enabled',\n\n    dirty = 'dirty',\n    no_dirty = 'no-dirty',\n\n    pristine = 'pristine',\n    no_pristine = 'no-pristine',\n\n    valid = 'valid',\n    no_valid = 'no-valid',\n    /* even if required is not necessary an input flag and while it's a dupplicate value whitch is available in validation \n    it's convinient to have it as an input flag. All the flags are calculated as a separate object which can be useed outside the component and the field itself */\n    required = 'required',\n    no_required = 'no-required',\n\n    busy = 'busy',\n    no_busy = 'no-busy',\n\n    /* this will reset the style flags */\n    clear = 'clear'\n}\n\nexport enum InputClassStatesNamesEnum {\n    errors = 'errors',\n    focus = 'focus',\n    open = 'open',\n    enabled = 'enabled',\n    dirty = 'dirty',\n    pristine = 'pristine',\n    valid = 'valid',\n    required = 'required',\n    busy = 'busy',\n    clear = 'clear'\n}\n\nexport type InputClassStatesValuesKeysType = keyof typeof InputClassStatesValuesEnum\nexport type InputClassStatesNamesType = keyof typeof InputClassStatesNamesEnum\n\nexport const InputClassStatesValuesArray = Object.values(InputClassStatesValuesEnum)\nexport type InputClassStatesValuesArrayType = typeof InputClassStatesValuesArray\nexport const InputClassStatesNamesArray: string[] = Object.values(InputClassStatesNamesEnum)\n","export enum MissingPropEnum {\n    ID = 'id',\n    NAME = 'name',\n    LABEL = 'label'\n}\n","/**\n * Explanation:\n        ([0-2][0-9]|3[0-1]): Matches days 01 to 31.\n        ([-/]): Captures the separator (- or /) and ensures consistency.\n        ([0][1-9]|1[0-2]): Matches months 01 to 12.\n        \\2: Ensures the same separator is used.\n        (\\d{4}): Matches a 4-digit year.\n */\nexport const ddMMYYYYRegex = /^([0-2][0-9]|3[0-1])([-/])([0][1-9]|1[0-2])\\2(\\d{4})$/\n\n/**Explanation:\n        ([0][1-9]|1[0-2]): Matches months 01 to 12.\n        ([-/]): Captures the separator (- or /) and ensures consistency.\n        ([0-2][0-9]|3[0-1]): Matches days 01 to 31.\n        \\2: Ensures the same separator is used.\n        (\\d{4}): Matches a 4-digit year.\n */\nexport const MMddYYYYRegex = /^([0][1-9]|1[0-2])([-/])([0-2][0-9]|3[0-1])\\2(\\d{4})$/\n\n/**\n * Explanation:\n        (\\d{4}): Matches a 4-digit year.\n        ([-/]): Captures the separator (- or /) and ensures consistency.\n        ([0][1-9]|1[0-2]): Matches months 01 to 12.\n        \\2: Ensures the same separator is used.\n        ([0-2][0-9]|3[0-1]): Matches days 01 to 31.\n */\nexport const yyyyMMDDRegex = /^(\\d{4})([-/])([0][1-9]|1[0-2])\\2([0-2][0-9]|3[0-1])$/\n\nexport enum DateFormatsEnum {\n    DD_MM_YYYY = 'dd/MM/yyyy',\n    MM_DD_YYYY = 'MM/dd/yyyy',\n    YYYY_MM_DD = 'yyyy/MM/dd'\n}\n","import {\n    DateFormatsEnum,\n    ddMMYYYYRegex,\n    MMddYYYYRegex,\n    yyyyMMDDRegex\n} from '@core/framework/types/date/date.types'\n\nexport function validateDateFormat(date: string): string | null {\n    if (ddMMYYYYRegex.test(date)) {\n        return DateFormatsEnum.DD_MM_YYYY\n    } else if (MMddYYYYRegex.test(date)) {\n        return DateFormatsEnum.MM_DD_YYYY\n    } else if (yyyyMMDDRegex.test(date)) {\n        return DateFormatsEnum.YYYY_MM_DD\n    }\n\n    return null // Invalid format\n}\n","/**\n * Pads a given number with leading zeros to ensure it has a specified minimum length.\n *\n * @param num - The number to be padded.\n * @param count - The desired minimum length of the resulting string.\n * @returns A string representation of the number, padded with leading zeros if necessary.\n */\nexport const getPaddedNumber = (num: number, count: number) => num.toString().padStart(count, '0')\n","import { DateFormatsEnum } from '@core/framework/types/date/date.types'\nimport { INDate } from '@core/framework/types/date/i-n-date'\nimport { DateObjectTypes } from './date-object.types'\nimport { validateDateFormat } from './date-picker.utils'\nimport { getPaddedNumber } from './getters/get-padded-number'\nimport { IDateObject } from './i-date-object'\n\nexport const DateObject = function (\n    this: IDateObject,\n    date?: Date,\n    name: string = '',\n    separator: string = '/'\n) {\n    this.name = name\n    this.separator = separator\n    this.dateObject = date\n        ? { day: date.getDate(), month: date.getMonth(), year: date.getFullYear() }\n        : {\n              day: new Date().getDate(),\n              month: new Date().getMonth(),\n              year: new Date().getFullYear()\n          }\n    this.dayOfWeek = date ? date.getDay() : new Date().getDay()\n} as any as IDateObject\n\nDateObject.prototype = {\n    day: function (this: IDateObject) {\n        return this.dateObject.day\n    },\n    month: function (this: IDateObject) {\n        return this.dateObject.month\n    },\n    year: function (this: IDateObject) {\n        return this.dateObject.year\n    },\n    isDefined: function (this: IDateObject) {\n        return (\n            this.dateObject.day !== 0 && this.dateObject.month !== 0 && this.dateObject.year !== 0\n        )\n    },\n    setFromStrings: function (this: IDateObject, day = '', month = '', year = '') {\n        this.dateObject.day = parseInt(day)\n        this.dateObject.month = parseInt(month) - 1\n        this.dateObject.year = parseInt(year)\n        this.dayOfWeek = new Date(\n            this.dateObject.year,\n            this.dateObject.month,\n            this.dateObject.day\n        ).getDay()\n    },\n    setFromNumbers: function (this: IDateObject, day = 0, month = 0, year = 0) {\n        this.dateObject.day = day\n        this.dateObject.month = month\n        this.dateObject.year = year\n        this.dayOfWeek = new Date(year, month, day).getDay()\n    },\n    setFromDate: function (this: IDateObject, date: Date) {\n        this.dateObject.day = date.getDate()\n        this.dateObject.month = date.getMonth()\n        this.dateObject.year = date.getFullYear()\n        this.dayOfWeek = date.getDay()\n    },\n    setFromNumber: function (this: IDateObject, date: number) {\n        const d = new Date(date)\n        this.setFromDate?.(d)\n    },\n    /** here we store the date object with the month shifted - 1 */\n    setFromObject: function (this: IDateObject, date: INDate) {\n        this.dateObject = { ...date, month: date.month - 1 } as INDate\n    },\n    setFromString: function (this: IDateObject, date: string, format: DateFormatsEnum) {\n        if (date.length === 10) {\n            let _year = ''\n            let _month = ''\n            let _day = ''\n            if (format === DateFormatsEnum.MM_DD_YYYY) {\n                _month = date.substring(0, 2)\n                _day = date.substring(3, 5)\n                _year = date.substring(6)\n            }\n\n            if (format === DateFormatsEnum.DD_MM_YYYY) {\n                _day = date.substring(0, 2)\n                _month = date.substring(3, 5)\n                _year = date.substring(6)\n            }\n\n            if (format === DateFormatsEnum.YYYY_MM_DD) {\n                _year = date.substring(0, 4)\n                _month = date.substring(5, 7)\n                _day = date.substring(8)\n            }\n\n            this.setFromStrings?.(_day, _month, _year)\n            return true\n        }\n        return false\n    },\n    isNullEmptyOrUndefined: function (this: IDateObject, dateObject: INDate | undefined | null) {\n        return dateObject === null || dateObject === undefined\n    },\n    setCurrentDate: function (this: IDateObject, year: number, month: number, day = 1) {\n        this.setFromNumbers?.(day, month, year)\n    },\n    /** Note that  */\n    toString: function (this: IDateObject, format: DateFormatsEnum) {\n        const day = this.dateObject.day\n        const month = this.dateObject.month + 1\n        const year = this.dateObject.year\n\n        if (format === DateFormatsEnum.MM_DD_YYYY) {\n            return `${getPaddedNumber(month, 2)}${this.separator}${getPaddedNumber(day, 2)}${\n                this.separator\n            }${year}`\n        }\n\n        if (format === DateFormatsEnum.DD_MM_YYYY) {\n            return `${getPaddedNumber(day, 2)}${this.separator}${getPaddedNumber(month, 2)}${\n                this.separator\n            }${year}`\n        }\n\n        if (format === DateFormatsEnum.YYYY_MM_DD) {\n            return `${year}${this.separator}${getPaddedNumber(month, 2)}${\n                this.separator\n            }${getPaddedNumber(day, 2)}`\n        }\n        return ''\n    },\n    toDate: function (this: IDateObject) {\n        return new Date(this.dateObject.year, this.dateObject.month, this.dateObject.day)\n    },\n    /** here we return the date object with the month shifted + 1 */\n    toINDate: function (this: IDateObject) {\n        return {\n            year: this.dateObject.year,\n            month: this.dateObject.month + 1,\n            day: this.dateObject.day\n        } as INDate\n    },\n    parse: function (this: IDateObject, value: DateObjectTypes) {\n        if (typeof value === 'string') {\n            const isValidFormat = validateDateFormat(value)\n            if (!isValidFormat) {\n                this.setFromString?.(value, DateFormatsEnum.YYYY_MM_DD)\n                return\n            }\n            this.setFromString?.(value, isValidFormat as DateFormatsEnum)\n        }\n\n        if (typeof value === 'number') {\n            this.setFromNumber?.(value)\n            return\n        }\n\n        if (value instanceof Date) {\n            this.setFromDate?.(value)\n            return\n        }\n\n        if (typeof value === 'object' && value !== null) {\n            if ('year' in value && 'month' in value && 'day' in value) {\n                this.setFromObject?.(value as INDate)\n                return\n            }\n        }\n        throw Error(`Cannot parse DATE ${JSON.stringify(value)} `)\n    }\n}\n","import { IFieldDescriptor } from '../schema/descriptor/field.descriptor'\nimport { DateObject } from '../types/date/date-object.object'\n\nexport const mapObjectToFields = (\n    schema: IFieldDescriptor[],\n    dataObject: object,\n    forceShouldValidate?: boolean\n): IFieldDescriptor[] => {\n    const output = [...schema]\n    const outputFields: IFieldDescriptor[] = []\n    if (dataObject) {\n        Object.entries(dataObject).forEach((o) => {\n            const key = o[0]\n            const value = o[1]\n            /**\n             * For common fields this is straight forward whereas for\n             * ^select^ kind of fields:\n             * the ID must be before the label\n             * I ... List should extends their base  types\n             * per instance:\n             * export interface IUserRolesList extends IUserRole\n             * and in their createSelector  they shoud export ID and Label\n             * The ID must be declared above the label.\n             */\n            const targetField = output.find((f) => f.name === key)\n            if (!targetField) return\n            targetField.objectValue = null\n            targetField.value = null\n            targetField.isDirty = false\n            if (targetField?.type === 'date') {\n                const dateObjectDisplay = new DateObject(undefined, 'display')\n                dateObjectDisplay?.parse?.(value as string)\n                targetField.objectValue = dateObjectDisplay.dateObject\n            }\n            if (targetField.validationOptions !== undefined && forceShouldValidate) {\n                targetField.shouldValidate = forceShouldValidate\n            }\n            // if (targetField?.type === 'select') {\n            //     targetField.value = value\n            // } else {\n            // }\n            targetField.value = value\n            targetField.loaded = true\n\n            // if (Number(key) > 0) {\n            //     if (targetField.validationOptions?.required?.required) {\n            //         if (\n            //             targetField.value === undefined &&\n            //             targetField.objectValue === undefined\n            //         ) {\n            //             targetField.isValid = false\n            //         }\n            //     }\n            // } else {\n            //     targetField.isValid = true\n            // }\n            targetField.isValid = true\n\n            if (targetField) outputFields.push({ ...targetField })\n        })\n    }\n    return outputFields.sort((a, b) => a.id - b.id)\n}\n\nexport const mapFieldsToObject = (fields: IFieldDescriptor[]): object => {\n    let outputItem = {}\n\n    const newFields = [...fields].sort((a, b) => a.id - b.id)\n\n    newFields.forEach((f) => {\n        if (f.name === 'id') {\n            outputItem = {\n                ...outputItem,\n                [f.name]: !f?.value || Number(f?.value) < 0 ? -1 : Number(f?.value)\n            }\n        } else {\n            const value = '' /// getFieldValue(f)\n            outputItem = { ...outputItem, [f.name]: value }\n        }\n    })\n\n    return outputItem\n}\n","import { MissingPropEnum } from '@common/missing-prop.enum'\n\nexport const isMissing = function (property: MissingPropEnum, componentName: string): never {\n    throw new Error(\n        `MISSING ${property}! ${componentName} component requires an ${property}. \n            This is probably due to the instance of the field \n            which has not the right name has it has being declared \n            in the model!`\n    )\n}\n","import { MissingPropEnum } from '@common/missing-prop.enum'\n\nimport { IValidationOptions } from '@core/managers/validation-manager/validation-manager.types'\nimport { IFieldDescriptor } from '../schema/descriptor/field.descriptor'\nimport { IEntityScheme } from '../schema/field-schema/field-schema-types'\nimport { isMissing } from '../validators'\n\nexport const mapSchemaToFieldDescriptor = (scheme: IEntityScheme): IFieldDescriptor[] => {\n    const output: IFieldDescriptor[] = []\n\n    scheme.properties.forEach((f) => {\n        const newF: IFieldDescriptor = {\n            id: f.id ?? isMissing(MissingPropEnum.ID, mapSchemaToFieldDescriptor.name),\n            isDirty: false,\n            isFocus: false,\n            isPristine: true,\n            isValid: false,\n            loaded: false,\n            label: f.name ?? isMissing(MissingPropEnum.LABEL, mapSchemaToFieldDescriptor.name),\n            name: f.name ?? isMissing(MissingPropEnum.NAME, mapSchemaToFieldDescriptor.name),\n            type: f.type,\n            value: null,\n            target: f.target === null || f.target === '' ? undefined : f.target,\n            options: f?.options.map((o, i) => {\n                return { ...o, sequenceId: i }\n            }),\n            errors: [],\n            guides: [],\n            shouldValidate: f.shouldValidate,\n            expectedValue:\n                f.expectedValue === null || f.expectedValue === '' ? undefined : f.expectedValue,\n            validationOptions: {\n                required: f.required,\n                max: f.max,\n                min: f.min,\n                maxLength: f.maxLength,\n                minLength: f.minLength,\n                pattern: f.pattern\n            } as IValidationOptions,\n            objectValue: null,\n            defaultValue: f.defaultValue,\n            mask: f.mask ?? undefined\n        }\n        output.push(newF)\n        // console.log(output)\n    })\n    const newOutPut = output.sort((a, b) => a.id - b.id)\n    return newOutPut\n}\n","import { DateObject } from '../types/date/date-object.object'\nimport { IDateObject } from '../types/date/i-date-object'\nimport { INDate } from '../types/date/i-n-date'\n\nexport const tryConvertINDateToDateObject = function (value: any): IDateObject | string {\n    try {\n        const dte = new DateObject()\n        if (dte.setFromString) {\n            dte?.setFromObject?.(value as unknown as INDate)\n        }\n        return dte\n    } catch {\n        return value\n    }\n}\n","import { INDate } from '@core/framework/types/date/i-n-date'\nimport { DateFormatsEnum } from '../date.types'\n\n/**\n * Formats a given date object into a string based on the specified output format.\n *\n * @param date - The date object to format. If not provided, an empty string is returned.\n * @param format - The desired output format for the date. Supported formats are:\n *   - `'yyyy/mm/dd'`: Outputs the date in the format \"year-month-day\".\n *   - `'mm/dd/yyyy'`: Outputs the date in the format \"month-day-year\".\n *   - `'dd/mm/yyyy'`: Outputs the date in the format \"day-month-year\" (default).\n * @returns A formatted date string based on the specified format, or an empty string if\n *          either the date or format is not provided.\n */\nexport const formatDate = (date?: INDate, format?: DateFormatsEnum) => {\n    if (!date || !format) return ''\n\n    switch (format) {\n        case DateFormatsEnum.YYYY_MM_DD:\n            return `${date?.year}-${date?.month.toString().padStart(2, '0')}-${date?.day\n                .toString()\n                .padStart(2, '0')}`\n\n        case DateFormatsEnum.MM_DD_YYYY:\n            return `${date?.month.toString().padStart(2, '0')}-${date?.day\n                .toString()\n                .padStart(2, '0')}-${date?.year}`\n\n        case DateFormatsEnum.DD_MM_YYYY:\n        default:\n            return `${date?.day.toString().padStart(2, '0')}-${date?.month\n                .toString()\n                .padStart(2, '0')}-${date?.year}`\n    }\n}\n","/**\n * Adjusts a given month number to ensure it falls within the valid range of 0 to 11.\n *\n * @param month - The month number to validate and adjust. It can be any integer.\n * @returns The corrected month number:\n * - Returns 11 if the input month is less than 0.\n * - Returns 0 if the input month is greater than 11.\n * - Returns the input month if it is within the range 0 to 11.\n */\nexport const getCorrectMonthNumber = (month: number): number =>\n    month < 0 ? 11 : month > 11 ? 0 : month\n","/**\n * Retrieves the abbreviated names of the days of the week.\n *\n * @returns {string[]} An array of strings representing the abbreviated day names,\n * starting with 'Sun' for Sunday and ending with 'Sat' for Saturday.\n */\nexport const getDayNames = (): string[] => {\n    return ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n}\n","import { getDayNames } from './get-day-names'\n\nexport const getDayIndex = (day: string): number => {\n    return getDayNames().indexOf(day)\n}\n","import { getDayNames } from './get-day-names'\n\nexport const getDayIndexByName = (day: string): number => {\n    return getDayNames().indexOf(day)\n}\n","import { getDayNames } from './get-day-names'\n\n/**\n * Retrieves the name of the day corresponding to the given day index.\n *\n * @param day - The index of the day (0-based, where 0 typically represents Sunday).\n * @returns The name of the day as a string.\n *\n * @throws Will throw an error if the day index is out of range or if `getDayNames()` does not return a valid array.\n */\nexport const getDayName = (day: number): string => {\n    return getDayNames()[day]\n}\n","import { getDayNames } from './get-day-names'\n\n/**\n * Retrieves the name of the day corresponding to the given index.\n *\n * @param index - The index of the day (0-based, where 0 typically represents Sunday).\n * @returns The name of the day as a string.\n *\n * @throws Will throw an error if the index is out of bounds or if `getDayNames` does not return a valid array.\n */\nexport const getDayNameByIndex = (index: number): string => {\n    return getDayNames()[index]\n}\n","/**\n * Gets the day of the week as a number (0-6) for a given date string.\n *\n * @param dateStr - A string representing a date. The string should be in a format\n *                  that is recognized by the `Date` constructor.\n * @returns The day of the week as a number, where 0 represents Sunday, 1 represents Monday,\n *          and so on up to 6, which represents Saturday.\n */\nexport const getDayNumber = (dateStr: string) => new Date(dateStr).getDay()\n","export const getSystemDateSeparator = () => {\n    const formattedDate = new Intl.DateTimeFormat('default').format(new Date())\n    const separator = formattedDate.replace(/\\d/g, '').trim()[0]\n    return separator\n}\n","/**\n * Generates an array of day numbers for a given month and year.\n *\n * @param month - The month for which to get the days (1-based, where 1 = January, 12 = December).\n * @param year - The year for which to get the days.\n * @returns An array of numbers representing the days of the specified month.\n *\n * @example\n * ```typescript\n * getMonthDays(2, 2023); // [1, 2, 3, ..., 28]\n * getMonthDays(12, 2023); // [1, 2, 3, ..., 31]\n * ```\n */\nexport const getMonthDays = (month: number, year: number): number[] => {\n    return Array.from({ length: new Date(year, month, 0).getDate() }, (_, i) => i + 1)\n}\n","export const getMonthNames = (): string[] => {\n    return [\n        'January',\n        'February',\n        'March',\n        'April',\n        'May',\n        'June',\n        'July',\n        'August',\n        'September',\n        'October',\n        'November',\n        'December'\n    ]\n}\n","import { getMonthNames } from './get-month-names'\n\n/**\n * Retrieves the index of a given month name from the list of month names.\n *\n * @param month - The name of the month to find the index for.\n * @returns The zero-based index of the month in the list of month names, or -1 if the month is not found.\n */\nexport const getMonthIndex = (month: string): number => {\n    return getMonthNames().indexOf(month)\n}\n","import { getMonthNames } from './get-month-names'\n\n/**\n * Retrieves the index of a month by its name.\n *\n * @param month - The name of the month to find the index for (e.g., \"January\", \"February\").\n * @returns The zero-based index of the month in the year (0 for January, 1 for February, etc.).\n *          Returns -1 if the month name is not found.\n */\nexport const getMonthIndexByName = (month: string): number => {\n    return getMonthNames().indexOf(month)\n}\n","import { getMonthNames } from './get-month-names'\n\n/**\n * Retrieves the name of the month corresponding to the given month index.\n *\n * @param month - The zero-based index of the month (0 for January, 1 for February, ..., 11 for December).\n * @returns The name of the month as a string.\n *\n * @throws Will throw an error if the provided month index is out of range or if `getMonthNames` does not return a valid array.\n */\nexport const getMonthName = (month: number): string => {\n    return getMonthNames()[month]\n}\n","import { getMonthNames } from './get-month-names'\n\n/**\n * Retrieves the name of a month based on its zero-based index.\n *\n * @param index - The zero-based index of the month (0 for January, 1 for February, etc.).\n * @returns The name of the month corresponding to the given index.\n *\n * @throws If the index is out of range or if `getMonthNames()` does not return a valid array.\n */\nexport const getMonthNameByIndex = (index: number): string => {\n    return getMonthNames()[index]\n}\n","/**\n * Generates a timestamp string in the format `YYYYMMDD` from a given Date object.\n *\n * @param date - The Date object to extract the timestamp from.\n * @returns A string representing the date in `YYYYMMDD` format.\n */\nexport const getTs = (date: Date) =>\n    `${date.getFullYear().toString()}${date.getMonth().toString().padStart(2, '0')}${date\n        .getDate()\n        .toString()\n        .padStart(2, '0')}`\n","/**\n * Generates an array representing the months of a year.\n *\n * @returns {number[]} An array of numbers from 1 to 12, where each number corresponds to a month of the year.\n */\nexport const getYearMonths = (): number[] => {\n    return Array.from({ length: 12 }, (_, i) => i + 1)\n}\n","/**\n * Generates an array of consecutive years within a specified range.\n *\n * @param start - The starting year of the range (inclusive).\n * @param end - The ending year of the range (inclusive).\n * @returns An array of numbers representing the years from `start` to `end`.\n *\n * @example\n * ```typescript\n * const years = getYears(2020, 2025);\n * console.log(years); // Output: [2020, 2021, 2022, 2023, 2024, 2025]\n * ```\n */\nexport const getYears = (start: number, end: number): number[] => {\n    return Array.from({ length: end - start + 1 }, (_, i) => i + start)\n}\n","import { DateFormatsEnum, DateObject, IDateObject } from '../types/date'\n\nexport const tryConvertStringToDateObject = function (\n    value: string,\n    format: DateFormatsEnum\n): IDateObject | string {\n    try {\n        const dte = new DateObject()\n        if (dte.setFromString) {\n            dte.setFromString(value, format)\n        }\n        return dte\n    } catch {\n        return value\n    }\n}\n","import { IEvents } from './events.types'\nimport _toFlags from './to-flags'\n\nexport const defaultExtendsEventObject: IEvents = {\n    action: '',\n    emitterName: '',\n    fieldName: '',\n    types: ['intitial'],\n    toFlags: () => _toFlags('', '', ['intitial'], '')\n}\n","import { TNotificationMethod } from '@core/managers/notification-manager/notification-manager.types'\n\nexport const emptyInitializeMethod: TNotificationMethod<unknown> = () => {}\n","import { IExtendedInput, IInputBase } from '@core/input-engine/core/input-base/input-base.types'\n\nexport interface IBaseEventsHanlders {\n    handleOnChanged: <T extends IEvents>(data?: T) => void\n}\n\nexport interface IOptionBaseEventsHanlders {\n    handleOnSelected: <T extends IEvents>(data?: T) => void\n}\n\nexport interface IClickBaseEventsHanlders {\n    handleOnClicked: <T extends IEvents>(data?: T) => void\n}\n\nexport enum EventsEnum {\n    intitial = 'intitial',\n    /** will validate on field blur (lost focus) */\n    onBlur = 'onBlur',\n    /** will validate on field value is changed */\n    onChange = 'onChange',\n    /** will validate on form submit */\n    onSubmit = 'onSubmit',\n    /** will validate on field got focus */\n    onFocus = 'onFocus',\n    /** will validate on field load */\n    onLoad = 'onLoad',\n\n    onClick = 'onClick',\n\n    onClear = 'onClear',\n\n    onResetValidation = 'onResetValidation',\n\n    onGet = 'onGet',\n\n    onValidate = 'onValidate',\n\n    onSelect = 'onSelect',\n\n    onKeyPress = 'onKeyPress',\n\n    onKeyDown = 'onKeyDown',\n\n    onKeyUp = 'onKeyUp',\n\n    onFormat = 'onFormat',\n\n    onOpen = 'onOpen',\n\n    onClose = 'onClose',\n\n    onUiUpdate = 'onUiUpdate',\n\n    onAutoTrackNotified = 'onAutoTrackNotified',\n\n    validateOnFormFirstSubmit = 'validateOnFormFirstSubmit',\n\n    onEngineStateChanger = 'onEngineStateChanger',\n\n    onDispose = 'onDispose',\n\n    onValueChange = 'onValueChange',\n\n    onValidationChange = 'onValidationChange',\n\n    onBusyStateChange = 'onBusyStateChange',\n\n    onObserve = 'onObserve'\n}\n\n/** if no rule is applied the the field is never validated */\nexport type EventsType = keyof typeof EventsEnum\n\n/**emitterName MUST be unique */\nexport interface IEvents {\n    fieldName: string\n    /** MUST be unique */\n    emitterName: string\n    types: EventsType[]\n    action: string\n    toFlags: () => string\n    target?: string\n    fieldRef?: IExtendedInput | IInputBase\n}\n","import { EventsType } from '../events.types'\n\nexport const defaultTriggers: EventsType[] = ['onChange', 'onBlur', 'onFocus']\n","import { ValidationLocalizeKeys } from '../../managers/validation-manager/validation-schema/validation.localize.keys'\nimport translations from './locale.en.json'\nimport { IValidationLocalize } from './localize.type'\n\nexport type TranslatioBuilderType = (\n    translations: IValidationLocalize,\n    token1: string,\n    token2: string\n) => (key: ValidationLocalizeKeys) => (data?: string, data2?: string) => string\n\nexport const getTranslationBuilder: TranslatioBuilderType =\n    (translations: IValidationLocalize, token1: string, token2: string) =>\n    (key: ValidationLocalizeKeys) =>\n    (data?: string, data2?: string) => {\n        const translation = translations.validations.find((t) => t.key === key)\n        if (translation) {\n            return translation.value\n                .replace(token1, data ?? '')\n                .replace(token2, data2 ?? '')\n                .replace(token1, '')\n                .replace(token2, '')\n        }\n        return ''\n    }\n\nexport const getTranslations = () => {\n    return translations as IValidationLocalize\n}\n","import { IApiError } from './i-api-error'\n\nexport class ApiError extends Error {\n    name = 'ApiError'\n    apiError: IApiError | undefined = undefined\n\n    constructor(error: IApiError | undefined) {\n        if (!error) {\n            super('unexpected Error')\n            return\n        }\n        super(error.message)\n        this.apiError = error\n        this.name = 'ApiError'\n    }\n\n    set data(error: IApiError | undefined) {\n        this.apiError = error\n    }\n\n    get data(): IApiError | undefined {\n        return this.apiError\n    }\n}\n","export const ErrorIndex = (x: number) => {\n    const incrementError = (y: number) => {\n        x = x + y\n        return x\n    }\n    return incrementError\n}\n","import { IFieldError } from './i-field-error'\n\nexport class FieldError extends Error {\n    name = 'FieldError'\n    fieldError: IFieldError | undefined = undefined\n\n    constructor(error?: IFieldError | undefined) {\n        if (!error) {\n            super('unexpected Error')\n            return\n        }\n        super(error.message)\n        this.fieldError = error\n        this.name = 'FieldError'\n    }\n\n    set data(error: IFieldError | undefined) {\n        this.fieldError = error\n    }\n\n    get data(): IFieldError | undefined {\n        return this.fieldError\n    }\n}\n","import { ErrorIndex } from './error-index'\n\nexport const GenErrorIds = ErrorIndex(0)\n","import { GenErrorIds } from './gen-error-ids'\nimport { IGeneralError } from './i-general-error'\n\nexport type GeneralErrorType = 'FieldError' | 'ApiError'\n\nexport class GeneralError extends Error {\n    id = 0\n    name = 'GeneralError'\n    origin = ''\n    innerError: GeneralErrorType | undefined = undefined\n\n    constructor(origin: string, message?: string, inner?: GeneralErrorType, id?: number) {\n        if (!message) {\n            super('unexpected Error')\n            return\n        }\n        super(message)\n        this.id = GenErrorIds(1)\n        this.origin = origin\n        this.name = 'GeneralError'\n        this.innerError = inner\n    }\n\n    set data(error: GeneralErrorType | undefined) {\n        this.innerError = error\n    }\n\n    get data(): GeneralErrorType | undefined {\n        return this.innerError\n    }\n\n    get toGI(): IGeneralError {\n        return {\n            id: this.id,\n            data: this.innerError,\n            message: this.message,\n            origin: this.origin\n        } as unknown as IGeneralError\n    }\n}\n","import { IFieldError } from './i-field-error'\n\nexport const newFieldError = (name: string, code: string, message?: string): IFieldError => {\n    return {\n        name,\n        code,\n        message\n    } as IFieldError\n}\n","import { IFieldGuide } from './i-field-guide'\n\nexport const newFieldGuide = (name: string, code: string, message?: string): IFieldGuide => {\n    return {\n        name,\n        code,\n        message\n    } as IFieldGuide\n}\n","import { memoize } from './memoize'\n\nexport const memoizeHandler = memoize((handler: Function, context: any) => handler.bind(context))\n","import { InputTypeNames } from '@core/framework/common/common.input.types'\n\nimport { InputDataTypes } from '@core/framework/common/common.input.data.types'\nimport { IFieldError } from '@core/framework/models/errors/i-field-error'\nimport { IFieldGuide } from '@core/framework/models/errors/i-field-guide'\nimport { IValidationOptions } from '@core/managers/validation-manager/validation-manager.types'\nimport { INDate } from '../../types/date/i-n-date'\nimport { IOptionItem } from '../option-schema/options.scheme.types'\n\nexport const SFieldDescriptor = Symbol.for('IFieldDescriptor')\n\n/**\n * Field Descriptor - The foundation interface of FORMULAR\n *\n * This interface represents the complete definition of a form field, including its data,\n * validation rules, state, and behavior. It serves as the primary building block for\n * all form fields in the FORMULAR system.\n *\n * A field descriptor contains all the information needed to:\n * - Render the field in the UI\n * - Validate user input\n * - Track field state and changes\n * - Handle user interactions\n * - Manage field options and configuration\n *\n * @example\n * ```typescript\n * const usernameField: IFieldDescriptor = {\n *   id: 1,\n *   name: 'username',\n *   label: 'Username',\n *   type: 'text',\n *   value: '',\n *   defaultValue: '',\n *   validationOptions: {\n *     required: { value: true },\n *     minLength: { value: 3 },\n *     maxLength: { value: 50 }\n *   },\n *   shouldValidate: true,\n *   isValid: false,\n *   isDirty: false,\n *   isPristine: true,\n *   isFocus: false,\n *   errors: [],\n *   guides: [],\n *   options: []\n * }\n * ```\n */\nexport interface IFieldDescriptor {\n    /** Unique numeric identifier for this field */\n    id: number\n\n    /** Unique string name/key for this field (used for form data) */\n    name: string\n\n    /** Display label for this field (shown in UI) */\n    label: string\n\n    /** Current value of the field */\n    value: InputDataTypes\n\n    /** Complex object value (for date/time fields and similar) */\n    objectValue: INDate | null\n\n    /** Default value for this field (used for reset operations) */\n    defaultValue: InputDataTypes\n\n    /** Type of input control ('text', 'email', 'select', etc.) */\n    type: InputTypeNames\n\n    /** Array of current validation errors for this field */\n    errors: IFieldError[]\n\n    /** Array of help/guide messages for this field */\n    guides: IFieldGuide[]\n\n    /** Validation rules configuration (required, min, max, pattern, etc.) */\n    validationOptions: IValidationOptions\n\n    /** Target element ID or selector (for linked fields) */\n    target?: string\n\n    /** Available options for select/radio/checkbox fields */\n    options: IOptionItem[]\n\n    /** Whether this field currently passes all validation rules */\n    isValid: boolean\n\n    /** Whether this field has been modified from its default value */\n    isDirty: boolean\n\n    /** Whether this field is in its original, unmodified state */\n    isPristine: boolean\n\n    /** Whether this field currently has focus */\n    isFocus: boolean\n\n    /** Expected value for testing/validation purposes */\n    expectedValue?: InputDataTypes\n\n    /** Whether this field has been loaded/initialized */\n    loaded?: boolean\n\n    /** Whether this field has been changed since last check */\n    changed?: boolean\n\n    /**\n     * Whether this field should be validated\n     *\n     * @remarks\n     * This is typically defined by backend/schema configuration and determines\n     * if validation rules should be applied to this field.\n     */\n    shouldValidate: boolean\n\n    /**\n     * Input mask pattern for formatting (optional)\n     *\n     * Use '#' as numeric placeholder. Examples:\n     * - Date: \"##/##/####\" → \"12/25/2023\"\n     * - Phone: \"(###) ###-####\" → \"(555) 123-4567\"\n     * - SSN: \"###-##-####\" → \"123-45-6789\"\n     */\n    mask?: string\n\n    /**\n     * Debounce delay in milliseconds for this field (optional)\n     *\n     * When set, overrides the global debounce configuration for this specific field.\n     * Useful for fields that need faster or slower update rates.\n     *\n     * @example\n     * debounceDelay: 200 // Updates 200ms after user stops typing\n     */\n    debounceDelay?: number\n}\n\nexport type TFieldDescriptor = {\n    [key in keyof IFieldDescriptor]: string\n}\n","import { IFieldSchema, IFieldSchemaBuilder } from '../field-schema-types'\n\nexport function build(this: IFieldSchemaBuilder) {\n    return {\n        ...this\n    } as IFieldSchema\n}\n","import { IFieldSchema, IFieldSchemaBuilder } from '../field-schema-types'\n\nexport function clone(this: IFieldSchemaBuilder) {\n    const tempInstance = { ...this } as IFieldSchema\n    return Object.assign(Object.create(Object.getPrototypeOf(this)), tempInstance) as IFieldSchema\n}\n","import { IFieldSchemaBuilder } from '../field-schema-types'\n\nexport function setDefaultValue(this: IFieldSchemaBuilder, defaultValue: any | null) {\n    this.defaultValue = defaultValue\n    return this\n}\n","import { IFieldSchemaBuilder } from '../field-schema-types'\n\nexport function setExpectedValue(this: IFieldSchemaBuilder, expectedValue: any | null) {\n    this.expectedValue = expectedValue\n    return this\n}\n","import { IFieldSchemaBuilder } from '../field-schema-types'\n\nexport function setId(this: IFieldSchemaBuilder, id: number) {\n    Object.defineProperty(this, 'id', {\n        value: id,\n        writable: false, // Prevent modification\n        configurable: false, // Prevent deletion or redefinition\n        enumerable: true // Make the property visible in enumerations\n    })\n    return this\n}\n","import { IFieldSchemaBuilder } from '../field-schema-types'\n\n/**\n * To define a mask you must use # as numeric placeholder\n * example mask: '##/##/####' will be converted to 12/12/2023\n * @param mask\n *\n * @returns\n */\nexport function setMask(this: IFieldSchemaBuilder, mask: string) {\n    this.mask = mask\n    return this\n}\n","import { IFieldSchemaBuilder } from '../field-schema-types'\n\nexport function setName(this: IFieldSchemaBuilder, name: string) {\n    Object.defineProperty(this, 'name', {\n        value: name,\n        writable: false, // Prevent modification\n        configurable: false, // Prevent deletion or redefinition\n        enumerable: true // Make the property visible in enumerations\n    })\n    return this\n}\n","import { IOptionItem } from '../../option-schema/options.scheme.types'\nimport { IFieldSchemaBuilder } from '../field-schema-types'\n\nexport function setOptionData(this: IFieldSchemaBuilder, target: string, options: IOptionItem[]) {\n    this.target = target\n    this.options = options\n    return this\n}\n","import { EventsType } from '@core/framework/events/events.types'\nimport { IFieldSchemaBuilder } from '../field-schema-types'\n\nexport function setTriggerKeyWord(this: IFieldSchemaBuilder, triggerKeyWord: EventsType[]) {\n    this.triggerKeyWord = triggerKeyWord\n    return this\n}\n","import { InputTypeNames } from '@core/framework/common/common.input.types'\nimport { IFieldSchemaBuilder } from '../field-schema-types'\n\nexport function setTypeInput(this: IFieldSchemaBuilder, type: InputTypeNames) {\n    Object.defineProperty(this, 'type', {\n        value: type,\n        writable: false, // Prevent modification\n        configurable: false, // Prevent deletion or redefinition\n        enumerable: true // Make the property visible in enumerations\n    })\n    return this\n}\n","import { IValidationOptions } from '@core/managers/validation-manager/validation-manager.types'\nimport { IFieldSchemaBuilder } from '../field-schema-types'\n\nexport function setValidationData(\n    this: IFieldSchemaBuilder,\n    shouldValidate: boolean,\n    validationData?: IValidationOptions\n) {\n    Object.assign(this, {\n        shouldValidate: shouldValidate,\n        ...validationData\n    })\n    return this\n}\n","import { IFieldSchemaBuilder } from './field-schema-types'\nimport { build } from './prototype/build'\nimport { clone } from './prototype/clone'\nimport { setDefaultValue } from './prototype/set-default-value'\nimport { setExpectedValue } from './prototype/set-expected-value'\nimport { setId } from './prototype/set-id'\nimport { setMask } from './prototype/set-mask'\nimport { setName } from './prototype/set-name'\nimport { setOptionData } from './prototype/set-option-data'\nimport { setTriggerKeyWord } from './prototype/set-trigger-key-word'\nimport { setTypeInput } from './prototype/set-type-input'\nimport { setValidationData } from './prototype/set-validation-data'\n\nexport const FieldSchemaBuilder = function (this: IFieldSchemaBuilder) {\n    this.target = null\n    this.options = []\n    this.expectedValue = null\n    this.shouldValidate = false\n    this.triggerKeyWord = []\n    this.mask = null\n} as unknown as IFieldSchemaBuilder\n\nObject.assign(FieldSchemaBuilder.prototype, {\n    setId,\n    setName,\n    setTypeInput,\n    setValidationData,\n    setMask,\n    setOptionData,\n    setExpectedValue,\n    setDefaultValue,\n    setTriggerKeyWord,\n    build,\n    clone\n})\n","import { IFieldSchemaBuilder } from '../../field-schema/field-schema-types'\nimport { IFieldSchemeFactory } from '../field-schema-factory.types'\n\n/**\n * Adds field schema builders to the factory.\n * @param builders Array of field schema builders to add.\n */\nexport function addBuilders(\n    this: IFieldSchemeFactory,\n    ...builders: IFieldSchemaBuilder[]\n): IFieldSchemeFactory {\n    this.builders = [...builders]\n    return this\n}\n","import { logManager } from '@core/managers/log-manager/log-manager'\nimport { IValidationOptions } from '@core/managers/validation-manager/validation-manager.types'\nimport { IFieldSchemaBuilder } from '../../field-schema/field-schema-types'\nimport { IOptionItem } from '../../option-schema/options.scheme.types'\nimport { IFieldSchemeFactory } from '../field-schema-factory.types'\n\n/**\n * Creates a field schema using the specified builder name and options.\n * @param name The name of the builder to use.\n * @param target The target for the field schema.\n * @param options The options for the field schema.\n * @param shouldValidate Whether validation should be applied.\n * @param validationOptions Optional validation options.\n * @returns The built field schema or undefined if not found.\n */\nexport function create(\n    this: IFieldSchemeFactory,\n    name: string,\n    target: string | null,\n    options: IOptionItem[],\n    shouldValidate: boolean,\n    validationOptions?: IValidationOptions\n) {\n    const _innerBuilder = this.builders.find((o: IFieldSchemaBuilder) => o.name === name)\n\n    if (!_innerBuilder) {\n        logManager(\n            undefined,\n            'error',\n            'FieldSchemaFactory',\n            `unable to find the builder for ${name}`\n        )\n        return undefined\n    }\n\n    return _innerBuilder\n        .setOptionData(target, options)\n        .setValidationData(shouldValidate, validationOptions)\n        .build()\n}\n","import { IFieldSchemeFactory } from './field-schema-factory.types'\nimport { addBuilders } from './prototype/add-builders'\nimport { create } from './prototype/create'\n\n/**\n * FieldSchemaFactory is a factory for managing and creating field schemas using registered builders.\n *\n * Usage:\n *   - Register builders using addBuilders.\n *   - Create field schemas using the create method.\n */\nexport const FieldSchemaFactory = function (this: IFieldSchemeFactory, name: string) {\n    this.name = name\n    this.builders = []\n} as any as IFieldSchemeFactory\n\nObject.assign(FieldSchemaFactory.prototype, {\n    addBuilders,\n    create\n})\n","/**\n * Capitalizes the first letter of a given word.\n *\n * @param word - The word to capitalize.\n * @returns The word with the first letter capitalized.\n */\nexport const capitalizeFirstLetter = (word: string): string => {\n    return word.replace(/\\w+/g, function (w) {\n        return w[0].toUpperCase() + w.slice(1)\n    })\n}\n","export const conditionalClass = (classes: string[]) => {\n    const output: string[] = []\n    for (const i of classes) {\n        if (i !== undefined && i !== null && !!i) {\n            output.push(i)\n        }\n    }\n    return output.join(' ')\n}\n","import { IIfClass } from './interfaces/i-if-class'\n\nexport const newIFClass = (classN: string, addIf?: boolean) => {\n    return { classN, addIf }\n}\n\nexport const ifClass = (classes: IIfClass[]) => {\n    const output: string[] = []\n    for (const i of classes) {\n        if (i !== undefined && i !== null && !!i && i.addIf) {\n            output.push(i.classN)\n        }\n    }\n    return output.join(' ')\n}\n","/**\n * Checks if a given bigint is null or undefined.\n *\n * @param value - The bigint to check.\n * @returns True if the bigint is null or undefined, otherwise false.\n */\nexport const isBigInt = (value?: unknown): boolean => typeof value === 'bigint'\n","/**\n * Checks if a given value is a proper Date instance.\n *\n * @param value - The value to check.\n * @returns True if the value is a proper Date instance, otherwise false.\n */\nexport const isDate = (value?: unknown): boolean => {\n    // Use instanceof but also check that it has the internal [[Class]] of Date\n    // This prevents Object.create(Date.prototype) from returning true\n    return value instanceof Date && Object.prototype.toString.call(value) === '[object Date]'\n}\n","import { DateObject } from '../types/date/date-object.object'\n\n/**\n * Checks if a given INDate or DateObject is null or undefined.\n *\n * @param value - The INDate or DateObject to check.\n * @returns True if the INDate or DateObject is null or undefined, otherwise false.\n */\nexport const isDateObject = (value?: unknown): boolean => value instanceof DateObject\n","/**\n * Checks if a given bigint is null or undefined.\n *\n * @param value - The bigint to check.\n * @returns True if the bigint is null or undefined, otherwise false.\n */\nexport const isFunction = (value?: any): boolean => typeof value === 'function'\n","import { DateObject } from '../types/date/date-object.object'\n\n/**\n * Checks if a given INDate or DateObject is null or undefined.\n *\n * @param value - The INDate or DateObject to check.\n * @returns True if the INDate or DateObject is null or undefined, otherwise false.\n */\nexport const isNDate = (value: any | null): boolean => {\n    try {\n        return (\n            !(value instanceof DateObject) && 'day' in value && 'month' in value && 'year' in value\n        )\n    } catch {\n        return false\n    }\n}\n","/**\n * Checks if a given string is null, empty, or undefined.\n *\n * @param value - The string to check.\n * @returns True if the string is null, empty, or undefined, otherwise false.\n */\nexport const isNullEmptyOrUndefined = (value?: unknown): boolean =>\n    value === null || value === '' || value === undefined\n","/**\n * Checks if a given string is null or empty.\n *\n * @param value - The string to check.\n * @returns True if the string is null or empty, otherwise false.\n */\nexport const isNullOrEmpty = (value: string | null): boolean => value === null || value === ''\n","/**\n * Checks if a given value is a number (excluding NaN).\n *\n * @param value - The value to check.\n * @returns True if the value is a number and not NaN, otherwise false.\n */\nexport const isNumber = (value?: any): boolean => typeof value === 'number' && !Number.isNaN(value)\n","/**\n * Checks if a given bigint is null or undefined.\n *\n * @param value - The bigint to check.\n * @returns True if the bigint is null or undefined, otherwise false.\n */\nexport const isString = (value?: unknown): boolean => typeof value === 'string'\n","import { IEvents } from '../events/events.types'\n\nexport const newNotificationVisitorName = (event: IEvents) => event.toFlags()\n","import { ScreenOrientationType } from './screen-orientation.type'\n\nexport const getScreenOrientationTypeName = (orientation: string): ScreenOrientationType =>\n    orientation as ScreenOrientationType\n","export enum ScreenOrientationEnum {\n    portrait = 'portrait',\n    landscape = 'landscape',\n    undefined = 'undefined'\n}\n","import { ScreenOrientationEnum } from './screen-orientation.enum'\n\nexport const ScreenOrientationArray: string[] = Object.values(ScreenOrientationEnum)\n","export const shallowCopy = <T>(instance: T): T => {\n    // Handle null and undefined\n    if (instance === null || instance === undefined) {\n        return instance\n    }\n\n    // Handle primitive values (numbers, strings, booleans)\n    if (typeof instance !== 'object' && typeof instance !== 'function') {\n        return instance\n    }\n\n    // Handle arrays\n    if (Array.isArray(instance)) {\n        return [...instance] as T\n    }\n\n    // Handle Date objects\n    if (instance instanceof Date) {\n        return new Date(instance.getTime()) as T\n    }\n\n    // Handle RegExp objects\n    if (instance instanceof RegExp) {\n        return new RegExp(instance.source, instance.flags) as T\n    }\n\n    // Handle functions\n    if (typeof instance === 'function') {\n        // Create a new function with same behavior and copy custom properties\n        const originalFunc = instance as any\n        const copiedFunc = function (this: any, ...args: any[]) {\n            return originalFunc.apply(this, args)\n        }\n\n        // Copy all enumerable properties from the original function\n        Object.assign(copiedFunc, originalFunc)\n\n        return copiedFunc as T\n    }\n\n    // Handle general objects - use Object.assign to copy enumerable properties\n    // and Object.getOwnPropertyDescriptors to get non-enumerable properties\n    const proto = Object.getPrototypeOf(instance)\n    const copy = Object.create(proto)\n\n    // Copy all properties (including non-enumerable ones)\n    const descriptors = Object.getOwnPropertyDescriptors(instance)\n    Object.defineProperties(copy, descriptors)\n\n    return copy as T\n}\n","export const stringIsDate = (value: string): boolean => {\n    if (value === null || value === undefined) {\n        return false\n    }\n\n    // Reject pure numeric strings (like '0', '123', '-1') as they're not proper date format strings\n    // Even though new Date('0') creates a valid date, we want proper date string formats\n    if (/^-?\\d+$/.test(value.trim())) {\n        return false\n    }\n\n    const date = new Date(value)\n    if (!date) {\n        return false\n    }\n\n    return !isNaN(date.getTime())\n}\n","/**\n * Converts a given word to PascalCase.\n *\n * @param word - The word to convert.\n * @returns The word converted to PascalCase.\n */\nexport const toPascal = (word: string): string => {\n    return word.replace(/\\w+/g, function (w) {\n        return w[0].toUpperCase() + w.slice(1).toLowerCase()\n    })\n}\n","import {\n    isNDate,\n    isNullEmptyOrUndefined,\n    tryConvertINDateToDateObject,\n    tryConvertStringToDateObject\n} from '@core/framework'\nimport { INDate } from '@core/framework/schema'\nimport { DateObject } from '@core/framework/types/date/date-object.object'\nimport { IDateObject } from '@core/framework/types/date/i-date-object'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { logManager } from '@core/managers/log-manager'\n\nimport { TGetter, TSetter } from '../value-manager.types'\n\nexport const dateGetter: TGetter<string | null> = (extInput: IExtendedInput): string | null => {\n    if (!isNullEmptyOrUndefined(extInput.input.objectValue)) {\n        if (isNDate(extInput.input.objectValue)) {\n            const value = tryConvertINDateToDateObject(extInput.input.objectValue)\n\n            if (value instanceof DateObject) {\n                return value.toString?.(extInput.input.culture.dateFormat) ?? null\n            }\n        }\n    }\n    return extInput.input.value as string | null\n}\n\n/**\n * Helper function to check if a date string is valid before attempting conversion\n */\nconst isValidDateString = (dateString: string, format: string): boolean => {\n    // Basic check - ensure we have enough characters and no obvious invalid dates\n    if (dateString.length !== 10) return false\n\n    // Extract parts based on common date patterns\n    const parts = dateString.split(/[/\\-.]/)\n    if (parts.length !== 3) return false\n\n    const [part1, part2, part3] = parts\n\n    // Basic range checks (doesn't need to be perfect, just prevent obvious errors)\n    const num1 = parseInt(part1, 10)\n    const num2 = parseInt(part2, 10)\n    const num3 = parseInt(part3, 10)\n\n    if (isNaN(num1) || isNaN(num2) || isNaN(num3)) return false\n\n    // Check for reasonable ranges (day: 1-31, month: 1-12, year: 1900-2100)\n    // This is a basic check, actual validation will happen in conversion\n    if (format.toLowerCase().includes('dd')) {\n        // DD/MM/YYYY or DD-MM-YYYY\n        return num1 >= 1 && num1 <= 31 && num2 >= 1 && num2 <= 12 && num3 >= 1900 && num3 <= 2100\n    } else if (format.toLowerCase().includes('mm')) {\n        // MM/DD/YYYY or MM-DD-YYYY\n        return num1 >= 1 && num1 <= 12 && num2 >= 1 && num2 <= 31 && num3 >= 1900 && num3 <= 2100\n    }\n\n    return true // Default to allowing conversion attempt\n}\n\nexport const dateSetter: TSetter<Date | IDateObject | INDate | string | null> = function (\n    extInput: IExtendedInput,\n    value: any\n) {\n    // console.log('🗓️ dateSetter called', { fieldName: extInput.input.name, value, valueType: typeof value, valueLength: typeof value === 'string' ? value.length : 'N/A', dependencyName: extInput.dependencyName })\n\n    try {\n        // For masked date inputs, we need to be more careful about when to attempt conversion\n        // Only try to convert if we have a complete date string and it's not from a masked input in progress\n        if (typeof value === 'string' && value.length === 10) {\n            // Check if this is a masked input by looking for a mask property\n            const isMaskedInput =\n                extInput.dependencyName === 'MaskedBaseInput' ||\n                (extInput as any).mask != null ||\n                (extInput.input as any).mask != null ||\n                extInput.input.type === 'date'\n\n            // For masked inputs, only convert if we have a complete valid-looking date\n            if (!isMaskedInput || isValidDateString(value, extInput.input.culture.dateFormat)) {\n                // console.log('✅ Attempting date conversion for:', value)\n                value = tryConvertStringToDateObject(value, extInput.input.culture.dateFormat)\n            } else {\n                // console.log('⏸️ Skipping conversion for masked input:', value)\n            }\n        }\n        if (isNDate(value)) {\n            value = tryConvertINDateToDateObject(value)\n        }\n\n        if (value instanceof DateObject) {\n            const dateString = value.toString?.(extInput.input.culture.dateFormat) ?? null\n            // console.log('📅 Setting DateObject value:', { dateString })\n\n            extInput.input.domManager.dmSetValue(extInput.input.id.toString(), dateString)\n            extInput.input.value = dateString\n            extInput.input.objectValue = value?.toINDate?.() ?? null\n        } else {\n            // console.log('📝 Setting string value:', value)\n            extInput.input.domManager.dmSetValue(extInput.input.id.toString(), value)\n            extInput.input.value = value\n            /** keep this object value to null until we have a correct date */\n            extInput.input.objectValue = null\n        }\n    } catch (e: any) {\n        // console.error('❌ dateSetter error:', { error: e.message, value, fieldName: extInput.input.name })\n        logManager(\n            undefined,\n            'error',\n            `Error setting date value for field ${extInput.input.name}: ${e.message}`,\n            'dateSetter'\n        )\n        // For masked inputs during typing, don't reset to null - preserve the partial input\n        const isMaskedInput =\n            extInput.dependencyName === 'MaskedBaseInput' ||\n            (extInput as any).mask != null ||\n            (extInput.input as any).mask != null ||\n            extInput.input.type === 'date'\n\n        if (isMaskedInput && typeof value === 'string' && value.length < 10) {\n            // console.log('🛡️ Preserving partial input for masked date:', value)\n            // Keep the partial input for masked date inputs\n            extInput.input.domManager.dmSetValue(extInput.input.id.toString(), value)\n            extInput.input.value = value\n            extInput.input.objectValue = null\n        } else {\n            // console.log('🚫 Resetting to null due to error')\n            extInput.input.value = null\n            extInput.input.objectValue = null\n        }\n    }\n}\n","import { dateTypes } from '@core/framework/common/common.input.types'\nimport { dateGetter, dateSetter } from '../parsers/date-io'\nimport { setParserStrategy } from '../value-manager.types'\n\nexport const dateParserStrategy = setParserStrategy(\n    'DateParserStrategy',\n    dateTypes,\n    'objectValue',\n    dateSetter,\n    dateGetter\n)\n","import { IOptionItem } from '@core/framework/schema/option-schema/options.scheme.types'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { TGetter, TSetter } from '../value-manager.types'\n\nexport const optionGetter: TGetter<IOptionItem | null> = (\n    field: IExtendedInput\n): IOptionItem | null => {\n    const optionItem = field?.optionBase.tryGetOptionByIdOrValue(\n        field.optionBase.selectedOptionId?.toString() ?? '',\n        field.input.value as string\n    )\n    if (!optionItem) {\n        field.input.message(\n            'info',\n            'IFieldInput.setValue',\n            `Unable to find the option for this field:  type: ${field.input.type}, name: ${\n                field.input.name\n            } option Id ${field.optionBase.selectedOptionId} or Value: ${\n                field.input.value as string\n            }`\n        )\n        return null\n    }\n    return optionItem\n}\n\nexport const optionSetter: TSetter<IOptionItem | null> = (\n    field: IExtendedInput,\n    value: any\n): void => {\n    if (value === null || value === undefined) {\n        field.optionBase.selectedOptionId = null\n        field.input.value = null\n        field.input.domManager.dmSetValue(field.input.id.toString(), null)\n        return\n    }\n    const optionItem = field?.optionBase.tryGetOptionByIdOrValue(\n        value?.toString() ?? '',\n        value as string\n    )\n    if (!optionItem) {\n        field.input.message(\n            'info',\n            'IFieldInput.setValue',\n            `Unable to find the option for this field:  type: ${field.input.type}, name: ${\n                field.input.name\n            } option Id or Value: ${value as string}`\n        )\n        return\n    }\n    field.optionBase.selectedOptionId = Number(optionItem.id)\n    field.input.value = optionItem.value\n    field.input.domManager.dmSetValue(field.input.id.toString(), optionItem.value ?? '')\n    field.input.domManager.dmSetSelected(field.input.id.toString(), optionItem.text ?? null)\n    field.input.domManager.dmSetFocus(field.input.id.toString())\n}\n","import { optionBaseedNumericTypes } from '@core/framework/common/common.input.types'\n\nimport { optionGetter, optionSetter } from '../parsers/options-io'\nimport { setParserStrategy } from '../value-manager.types'\n\nexport const numericOptionParserStrategy = setParserStrategy(\n    'NumericOptionParserStrategy',\n    optionBaseedNumericTypes,\n    'selectedOptionId',\n    optionSetter,\n    optionGetter\n)\n","import { isNumber } from '@core/framework/utility/is-number'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\n\nimport { TGetter, TSetter } from '../value-manager.types'\n\nexport const numericGetter: TGetter<number | null> = (extInput: IExtendedInput): number | null => {\n    if (extInput.input.value !== null && !isNumber(extInput.input.value)) {\n        throw new Error(\n            `${numericGetter.name}: cannot get the value as number, is not number compatible value: ${JSON.stringify(extInput.input.value)}, field: ${extInput.input?.id}`\n        )\n    }\n    return extInput.input.value as number | null\n}\n\nexport const numericSetter: TSetter<number | null> = function (\n    extInput: IExtendedInput,\n    value: any | null\n) {\n    if ((value !== null || value !== undefined) && !isNumber(value)) {\n        throw new Error(\n            `${numericGetter.name}: cannot set the value as number, is not number compatible value: ${JSON.stringify(extInput.input.value)}, field: ${extInput.input?.id}`\n        )\n    }\n    extInput.input.domManager.dmSetValue(extInput.input.id.toString(), value)\n    extInput.input.value = value\n}\n","import { numberTypes } from '@core/framework'\nimport { numericGetter, numericSetter } from '../parsers/numeric-io'\nimport { setParserStrategy } from '../value-manager.types'\n\nexport const numericParserStrategy = setParserStrategy(\n    'NumericParserStrategy',\n    numberTypes,\n    'value',\n    numericSetter,\n    numericGetter\n)\n","import { TGetter, TSetter } from '../value-manager.types'\n\nimport { IOptionItem } from '@core/framework/schema/option-schema/options.scheme.types'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\n\nexport const selectGetter: TGetter<IOptionItem | null> = (\n    field: IExtendedInput\n): IOptionItem | null => {\n    const optionItem = field?.optionBase.tryGetOptionBySequenceIdThenIdOrValue(\n        field.optionBase.selectedOptionId ?? -1,\n        field.optionBase.selectedOptionId?.toString() ?? '',\n        field.input.value as string\n    )\n    if (!optionItem) {\n        field.input.message(\n            'error',\n            'IFieldInput.setValue',\n            `Unable to find the option for this field:  type: ${field.input.type}, name: ${\n                field.input.name\n            } option Id ${field.optionBase.selectedOptionId} or Value: ${\n                field.input.value as string\n            }`\n        )\n        return null\n    }\n    return optionItem\n}\n\nexport const selectSetter: TSetter<IOptionItem | null> = (\n    field: IExtendedInput,\n    value: any\n): void => {\n    if (value === null || value === undefined) {\n        field.optionBase.selectedOptionId = null\n        field.input.value = null\n        field.input.domManager.dmSetValue(field.input.id.toString(), null)\n        return\n    }\n    const optionItem = field?.optionBase.tryGetOptionBySequenceIdThenIdOrValue(\n        Number(value),\n        value as string,\n        value as string\n    )\n    if (!optionItem) {\n        field.input.message(\n            'error',\n            'IFieldInput.setValue',\n            `Unable to find the option for this field:  type: ${field.input.type}, name: ${\n                field.input.name\n            } option Id or Value: ${value as string}`\n        )\n        return\n    }\n    field.optionBase.selectedOptionId = Number(optionItem.id)\n    field.input.value = optionItem.value\n    field.input.domManager.dmSetValue(field.input.id.toString(), optionItem.value ?? '')\n}\n","import { optionBaseedNumericTypes } from '@core/framework/common/common.input.types'\n\nimport { selectGetter, selectSetter } from '../parsers/select-option-io'\nimport { setParserStrategy } from '../value-manager.types'\n\nexport const selectOptionParserStrategy = setParserStrategy(\n    'SelectOptionParserStrategy',\n    optionBaseedNumericTypes,\n    'selectedOptionId',\n    selectSetter,\n    selectGetter\n)\n","import { isString } from '@core/framework/utility/is-string'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\n\nimport { TGetter, TSetter } from '../value-manager.types'\n\nexport const stringGetter: TGetter<string | null> = (extInput: IExtendedInput): string | null => {\n    if (extInput.input.value !== null && !isString(extInput.input.value)) {\n        throw new Error(\n            `${stringGetter.name}: cannot get he value as string, is not string compatible value: ${JSON.stringify(extInput.input.value)}, field: ${extInput.input?.id}`\n        )\n    }\n    return extInput.input.value as string | null\n}\n\nexport const stringSetter: TSetter<string | null> = function (\n    extInput: IExtendedInput,\n    value: any\n): void {\n    if (extInput.input.value !== null && !isString(value)) {\n        throw new Error(\n            `${stringSetter.name}: cannot set he value as string, is not boolean string value: ${JSON.stringify(extInput.input?.value)}, field: ${extInput.input?.id}`\n        )\n    }\n\n    extInput.input.domManager.dmSetValue(extInput.input.id.toString(), value as string | null)\n    extInput.input.value = value\n}\n","import { stringTypes } from '@core/framework/common/common.input.types'\nimport { stringGetter, stringSetter } from '../parsers/string-io'\nimport { setParserStrategy } from '../value-manager.types'\n\nexport const stringParserStrategy = setParserStrategy(\n    'StringParserStrategy',\n    stringTypes,\n    'value',\n    stringSetter,\n    stringGetter\n)\n","import { IServiceManager } from '@core/managers/service-manager/service-manager.types'\nimport {\n    ITrackingManager,\n    ITrackingOutputProvider,\n    STrackingManager\n} from '@core/managers/tracking-manager/tracker-manager.types'\n\nexport const STrackingStrategyService = Symbol.for('ITrackingStrategyService')\n\nexport interface ITrackingStrategyService {\n    new (sm: IServiceManager): ITrackingStrategyService\n    sm: IServiceManager\n    strategies: ITrackingOutputProvider[]\n    add: (...strategies: ITrackingOutputProvider[]) => void\n    remove: (...strategies: ITrackingOutputProvider[]) => void\n    reset: () => void\n    sync: () => void\n}\n\nexport const TrackingStrategyService = function (\n    this: ITrackingStrategyService,\n    sm: IServiceManager\n) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n    this.sm = sm\n    let _strategies: ITrackingOutputProvider[] | undefined = []\n    Object.defineProperties(this, {\n        strategies: {\n            get: function () {\n                return _strategies\n            },\n            set: function (...strategies: ITrackingOutputProvider[]) {\n                for (const strategy of strategies) {\n                    if (!_strategies.includes(strategy)) {\n                        _strategies.push(strategy)\n                    }\n                }\n                this.sync()\n            },\n            enumerable: true,\n            configurable: false\n        }\n    })\n\n    this.sync = function (this: ITrackingStrategyService) {\n        const vm = this.sm.lazy<ITrackingManager>(STrackingManager)?.()\n        if (vm) {\n            vm.addProviders(this.strategies)\n        }\n    }\n\n    // Register the base input service with the service manager\n} as any as ITrackingStrategyService\n\nObject.assign(TrackingStrategyService.prototype, {\n    add: function (this: ITrackingStrategyService, ...strategies: ITrackingOutputProvider[]) {\n        for (const strategy of strategies) {\n            if (!this.strategies.includes(strategy)) {\n                this.strategies.push(strategy)\n            }\n        }\n        this.sync()\n    },\n\n    remove: function (this: ITrackingStrategyService, ...strategies: ITrackingOutputProvider[]) {\n        for (const strategy of strategies) {\n            const index = this.strategies.indexOf(strategy)\n            if (index !== -1) {\n                this.strategies.splice(index, 1)\n            }\n        }\n        this.sync()\n    },\n\n    reset: function (this: ITrackingStrategyService) {\n        this.strategies = []\n        this.sync()\n    }\n})\n","import { IServiceManager } from '@core/managers/service-manager/service-manager.types'\nimport {\n    IValidationManager,\n    IValidationMethodStrategy,\n    SValidationManager\n} from '@core/managers/validation-manager/validation-manager.types'\n\nexport const SValidationStrategyService = Symbol.for('IValidationStrategyService')\n\nexport interface IValidationStrategyService {\n    new (sm: IServiceManager): IValidationStrategyService\n    sm: IServiceManager\n    strategies: IValidationMethodStrategy[]\n    add: (...strategies: IValidationMethodStrategy[]) => void\n    remove: (...strategies: IValidationMethodStrategy[]) => void\n    reset: () => void\n    sync: () => void\n}\n\nexport const ValidationStrategyService = function (\n    this: IValidationStrategyService,\n    sm: IServiceManager\n) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n    this.sm = sm\n    let _strategies: IValidationMethodStrategy[] | undefined = []\n    Object.defineProperties(this, {\n        strategies: {\n            get: function () {\n                return _strategies\n            },\n            set: function (...strategies: IValidationMethodStrategy[]) {\n                for (const strategy of strategies) {\n                    if (!_strategies.includes(strategy)) {\n                        _strategies.push(strategy)\n                    }\n                }\n                this.sync()\n            },\n            enumerable: true,\n            configurable: false\n        }\n    })\n\n    this.sync = function (this: IValidationStrategyService) {\n        const vm = this.sm.lazy<IValidationManager>(SValidationManager)?.()\n        if (vm) {\n            vm.addValidationStrategies(...this.strategies)\n        }\n    }\n\n    // Register the base input service with the service manager\n} as any as IValidationStrategyService\n\nObject.assign(ValidationStrategyService.prototype, {\n    add: function (this: IValidationStrategyService, ...strategies: IValidationMethodStrategy[]) {\n        for (const strategy of strategies) {\n            if (!this.strategies.includes(strategy)) {\n                this.strategies.push(strategy)\n            }\n        }\n        this.sync()\n    },\n\n    remove: function (\n        this: IValidationStrategyService,\n        ...strategies: IValidationMethodStrategy[]\n    ) {\n        for (const strategy of strategies) {\n            const index = this.strategies.indexOf(strategy)\n            if (index !== -1) {\n                this.strategies.splice(index, 1)\n            }\n        }\n        this.sync()\n    },\n\n    reset: function (this: IValidationStrategyService) {\n        this.strategies = []\n        this.sync()\n    }\n})\n","import { EventsType } from '@core/framework/events/events.types'\nimport {\n    IFormularManager,\n    SFormularManager\n} from '@core/managers/formular-manager/formular-manager.types'\nimport { IServiceManager } from '@core/managers/service-manager/service-manager.types'\n\nexport const SValidationTriggerService = Symbol.for('IValidationTriggerService')\n\nexport interface IValidationTriggerService {\n    new (sm: IServiceManager): IValidationTriggerService\n    triggers: EventsType[]\n    sm: IServiceManager\n    canTrigger: (...triggers: EventsType[]) => boolean\n    add: (...triggers: EventsType[]) => void\n    remove: (...triggers: EventsType[]) => void\n    reset: () => void\n    sync: () => void\n}\n\nexport const ValidationTriggerService = function (\n    this: IValidationTriggerService,\n    sm: IServiceManager\n) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n    let _triggers: EventsType[] = []\n    Object.defineProperties(this, {\n        triggers: {\n            get: function () {\n                return _triggers\n            },\n            set: function (triggers: EventsType[]) {\n                _triggers = triggers || []\n            },\n            enumerable: true,\n            configurable: false\n        }\n    })\n    this.sm = sm\n    this.sync = function (this: IValidationTriggerService) {\n        // Propagate triggers to all existing forms so fields inherit them\n        const fm = this.sm.tryResolve<IFormularManager>(SFormularManager)\n        if (fm && fm.forms && fm.forms.size > 0) {\n            for (const form of fm.forms.values()) {\n                form.setTriggerKeyWord(this.triggers)\n            }\n        }\n    }\n    // Register the base input service with the service manager\n} as any as IValidationTriggerService\n\nObject.assign(ValidationTriggerService.prototype, {\n    canTrigger: function (this: IValidationTriggerService, ...triggers: EventsType[]): boolean {\n        for (const trigger of triggers) {\n            if (this.triggers.includes(trigger)) {\n                return true\n            }\n        }\n        return false\n    },\n\n    add: function (this: IValidationTriggerService, ...triggers: EventsType[]): void {\n        const currentTriggers = [...this.triggers]\n        for (const trigger of triggers) {\n            if (!currentTriggers.includes(trigger)) {\n                currentTriggers.push(trigger)\n            }\n        }\n        this.triggers = currentTriggers\n        this.sync()\n    },\n    remove: function (this: IValidationTriggerService, ...triggers: EventsType[]): void {\n        let currentTriggers = [...this.triggers]\n        for (const trigger of triggers) {\n            // Remove all occurrences of the trigger\n            currentTriggers = currentTriggers.filter((t) => t !== trigger)\n        }\n        this.triggers = currentTriggers\n        this.sync()\n    },\n    reset: function (this: IValidationTriggerService) {\n        this.triggers = []\n        this.sync()\n    }\n})\n","import { IServiceManager } from '@core/managers/service-manager/service-manager.types'\nimport {\n    IParserStrategy,\n    IValueManager,\n    SValueManager\n} from '@core/managers/value-manager/value-manager.types'\n\nexport const SValueStrategyService = Symbol.for('IValueStrategyService')\n\nexport interface IValueStrategyService {\n    new (sm: IServiceManager): IValueStrategyService\n    sm: IServiceManager\n    strategies: IParserStrategy<any>[]\n    add: (...strategies: IParserStrategy<any>[]) => void\n    remove: (...strategies: IParserStrategy<any>[]) => void\n    reset: () => void\n    sync: () => void\n}\n\nexport const ValueStrategyService = function (this: IValueStrategyService, sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n    let _strategies: IParserStrategy<any>[] | undefined = []\n    Object.defineProperties(this, {\n        strategies: {\n            get: function () {\n                return _strategies\n            },\n            set: function (...strategies: IParserStrategy<any>[]) {\n                for (const strategy of strategies) {\n                    if (!_strategies.includes(strategy)) {\n                        _strategies.push(strategy)\n                    }\n                }\n                this.sync()\n            },\n            enumerable: true,\n            configurable: false\n        }\n    })\n    this.sm = sm\n    this.sync = function (this: IValueStrategyService) {\n        const vm = this.sm.lazy<IValueManager>(SValueManager)?.()\n        if (vm) {\n            vm.acceptValueStrategies(...this.strategies)\n        }\n    }\n\n    // Register the base input service with the service manager\n} as any as IValueStrategyService\n\nObject.assign(ValueStrategyService.prototype, {\n    add: function (this: IValueStrategyService, ...strategies: IParserStrategy<any>[]) {\n        for (const strategy of strategies) {\n            if (!this.strategies.includes(strategy)) {\n                this.strategies.push(strategy)\n            }\n        }\n        this.sync()\n    },\n\n    remove: function (this: IValueStrategyService, ...strategies: IParserStrategy<any>[]) {\n        for (const strategy of strategies) {\n            const index = this.strategies.indexOf(strategy)\n            if (index !== -1) {\n                this.strategies.splice(index, 1)\n            }\n        }\n        this.sync()\n    },\n\n    reset: function (this: IValueStrategyService) {\n        this.strategies = []\n        this.sync()\n    }\n})\n","import { IServiceManager } from '@core/managers/service-manager/service-manager.types'\nimport { consoleTrackingProvider } from '@core/managers/tracking-manager/tracker-manager.default.provider'\nimport { validatorMaxLengthStrategy } from '@core/managers/validation-manager/strategies/validator-max-length-strategy'\nimport { validatorMaxStrategy } from '@core/managers/validation-manager/strategies/validator-max-strategy'\nimport { validatorMinLengthStrategy } from '@core/managers/validation-manager/strategies/validator-min-length-strategy'\nimport { validatorMinStrategy } from '@core/managers/validation-manager/strategies/validator-min-strategy'\nimport { validatorRequiredStrategy } from '@core/managers/validation-manager/strategies/validator-required-strategy'\nimport { validatorPatternStrategy } from '@core/managers/validation-manager/strategies/vaslidator-pattern-strategy'\nimport { booleanParserStrategy } from '@core/managers/value-manager/strategies/boolean-parser-strategy'\nimport { dateParserStrategy } from '@core/managers/value-manager/strategies/date-parser-strategy'\nimport { numericOptionParserStrategy } from '@core/managers/value-manager/strategies/numeric-option-parser-strategy'\nimport { numericParserStrategy } from '@core/managers/value-manager/strategies/numeric-parser-strategy'\nimport { selectOptionParserStrategy } from '@core/managers/value-manager/strategies/select-option-parser-strategy'\nimport { stringParserStrategy } from '@core/managers/value-manager/strategies/string-parser-strategy'\n\nimport {\n    ITrackingStrategyService,\n    STrackingStrategyService\n} from '../services/tracking-strategy-service'\nimport {\n    IValidationStrategyService,\n    SValidationStrategyService\n} from '../services/validation-strategy-service'\nimport {\n    IValidationTriggerService,\n    SValidationTriggerService\n} from '../services/validation-trigger-service'\nimport { IValueStrategyService, SValueStrategyService } from '../services/value-strategy-service'\n\nexport const setupBaseFieldsConfiguration = function (sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n    const validationTriggerService =\n        sm.lazy<IValidationTriggerService>(SValidationTriggerService)?.()\n    const validationService = sm.lazy<IValidationStrategyService>(SValidationStrategyService)?.()\n    const valueStrategyService = sm.lazy<IValueStrategyService>(SValueStrategyService)?.()\n    const trackingStrategyService = sm.lazy<ITrackingStrategyService>(STrackingStrategyService)?.()\n\n    validationService.add(\n        validatorMaxLengthStrategy,\n        validatorMaxStrategy,\n        validatorMinLengthStrategy,\n        validatorMinStrategy,\n        validatorRequiredStrategy,\n        validatorPatternStrategy\n    )\n\n    valueStrategyService.add(\n        booleanParserStrategy,\n        stringParserStrategy,\n        numericParserStrategy,\n        dateParserStrategy,\n        numericOptionParserStrategy,\n        selectOptionParserStrategy\n    )\n\n    trackingStrategyService.add(consoleTrackingProvider)\n\n    validationTriggerService.add('onBlur', 'onChange', 'onKeyUp', 'onKeyDown', 'onFocus')\n}\n","import { IConfigurationManager } from '../interfaces/i-configuration-manager'\n\nexport const getConfigByName = function <T>(\n    this: IConfigurationManager,\n    ...names: string[]\n): T | undefined {\n    if (names.length === 0) {\n        return undefined\n    }\n\n    // Navigate through the configuration using the provided path\n    let current: any = this.activeConfiguration\n\n    // Navigate to the parent container (all elements except the last)\n    for (let i = 0; i < names.length - 1; i++) {\n        const element = names[i]\n        if (!current || typeof current !== 'object') {\n            return undefined\n        }\n\n        current = current[element]\n    }\n\n    // Handle the last element based on whether the container is an array or object\n    const lastElement = names[names.length - 1]\n\n    if (!current) {\n        console.warn(`Default Configuration not found! Searched Path: ${names.join('.')}`)\n        return undefined\n    }\n\n    // If it's an array, search by find(o => o.name === lastElement)\n    if (Array.isArray(current)) {\n        return current.find((item: any) => item && item.name === lastElement) as T | undefined\n    }\n\n    // If it's an object, first try direct property access\n    if (typeof current === 'object') {\n        // Direct property access - this handles simple nested objects\n        if (current.hasOwnProperty(lastElement)) {\n            return current[lastElement] as T | undefined\n        }\n\n        // Fallback to the original logic for special cases\n        // Search by Object.keys(current).find(key => current[key][lastElement] === true)\n        const foundKey = Object.keys(current).find((key) => {\n            const item = current[key]\n            return item && typeof item === 'object' && item[lastElement] === true\n        })\n\n        if (foundKey) {\n            return current[foundKey] as T | undefined\n        }\n    }\n\n    return undefined\n}\n","import { IConfiguration, IValidationPattern } from '../interfaces'\n\nexport const defaultConfiguration: IConfiguration = {\n    name: 'default-formular-configuration',\n    targetEnvironment: 'development',\n    cultures: {\n        defaultCulture: {\n            name: 'fr-CH',\n            dateFormat: 'dd/MM/yyyy' as any,\n            timeFormat: 'HH:mm:ss',\n            currencySymbol: 'CHF',\n            separator: '.'\n        },\n        supportedCultures: [\n            {\n                name: 'en-US',\n                dateFormat: 'MM/dd/yyyy' as any,\n                timeFormat: 'hh:mm:ss tt',\n                currencySymbol: '$',\n                separator: '/'\n            },\n            {\n                name: 'fr-FR',\n                dateFormat: 'dd/MM/yyyy' as any,\n                timeFormat: 'HH:mm:ss',\n                currencySymbol: '€',\n                separator: '/'\n            },\n            {\n                name: 'de-DE',\n                dateFormat: 'dd/MM/yyyy' as any,\n                timeFormat: 'HH:mm:ss',\n                currencySymbol: '€',\n                separator: '/'\n            }\n        ],\n        lokalizeTokensReplacement: [\n            {\n                name: 'validationDataToken1',\n                token: '|data|'\n            },\n            {\n                name: 'validationDataToken2',\n                token: '|data2|'\n            }\n        ]\n    },\n    rendering: {\n        components: [\n            {\n                name: 'drawer',\n                height: '350px',\n                width: '250px'\n            }\n        ],\n        commands: [\n            {\n                name: 'primary',\n                rounded: true,\n                size: 'sm',\n                width: '1.8em',\n                height: '1.8em',\n                className: 'ml-0'\n            },\n            {\n                name: 'submit',\n                rounded: true,\n                size: 'lg',\n                width: '5em',\n                height: '5em',\n                className: 'ml-0'\n            }\n        ],\n        suffixes: [\n            {\n                name: 'labelId',\n                value: '-label'\n            },\n            {\n                name: 'describedById',\n                value: '-describedby'\n            }\n        ]\n    },\n    behavior: {\n        form: {\n            name: 'default-form-behavior',\n            enforceConfigurationCheck: true,\n            validationTriggers: ['onBlur', 'onSubmit'],\n            enableIntrospection: true,\n            debugStreamSize: 100\n        },\n        validations: {\n            patterns: [\n                {\n                    name: 'email-pattern',\n                    cultureName: 'en-US',\n                    regex: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n                },\n                {\n                    name: 'phone-pattern-us',\n                    cultureName: 'en-US',\n                    regex: /^\\+?1?[-\\s.]?\\(?\\d{3}\\)?[-\\s.]?\\d{3}[-\\s.]?\\d{4}$/\n                },\n                {\n                    name: 'postal-code-us',\n                    cultureName: 'en-US',\n                    regex: /^\\d{5}(-\\d{4})?$/\n                },\n                {\n                    name: 'postal-code-fr',\n                    cultureName: 'fr-FR',\n                    regex: /^\\d{5}$/\n                }\n            ] as IValidationPattern[]\n        },\n        customValidations: [],\n        events: [\n            {\n                name: 'onValidate',\n                triggerDelay: 500\n            },\n            {\n                name: 'onChange',\n                triggerDelay: 500\n            },\n            {\n                name: 'onClick',\n                triggerDelay: 500\n            },\n            {\n                name: 'onSelect',\n                triggerDelay: 500\n            },\n            {\n                name: 'onFocus',\n                triggerDelay: 500\n            },\n            {\n                name: 'onBlur',\n                triggerDelay: 500\n            },\n            {\n                name: 'onKeyDown',\n                triggerDelay: 500\n            },\n            {\n                name: 'onKeyUp',\n                triggerDelay: 500\n            },\n            {\n                name: 'onUiUpdate',\n                triggerDelay: 500\n            },\n            {\n                name: 'onObserve',\n                triggerDelay: 500\n            }\n        ]\n    }\n}\n","import { defaultConfiguration } from '../default/default-configuration'\nimport { IConfiguration } from '../interfaces/i-configuration'\nimport { IConfigurationManager } from '../interfaces/i-configuration-manager'\n\n/**\n * Gets the default configuration object\n * @returns The default configuration\n */\nexport function getDefaultConfiguration(this: IConfigurationManager): IConfiguration {\n    return { ...defaultConfiguration }\n}\n","import { IConfiguration } from '../interfaces'\nimport { IConfigurationManager } from '../interfaces/i-configuration-manager'\n\nexport const loadJson = async function (this: IConfigurationManager, path: string): Promise<void> {\n    try {\n        let data: string // Check if running in Node.js environment\n        const isNodeJs = typeof globalThis !== 'undefined' && globalThis.process?.versions?.node\n\n        if (isNodeJs) {\n            // Node.js environment - use dynamic import to avoid bundling issues\n            const { readFile } = await import('fs/promises')\n            data = await readFile(path, 'utf-8')\n        } else {\n            // Browser environment - use fetch API\n            const response = await fetch(path)\n            if (!response.ok) {\n                throw new Error(`HTTP error! status: ${response.status}`)\n            }\n            data = await response.text()\n        }\n\n        // Parse and validate the JSON\n        const json = JSON.parse(data) as IConfiguration\n\n        // Validate that it has required properties\n        if (!json.name || !json.targetEnvironment) {\n            throw new Error(\n                'Invalid configuration: missing required properties (name, targetEnvironment)'\n            )\n        }\n\n        // Set the configuration using the name from the JSON\n        this.setConfiguration(json.name, json)\n    } catch (error) {\n        console.error(`Failed to load JSON configuration from ${path}:`, error)\n        throw error\n    }\n}\n","import { defaultConfiguration } from '../default/default-configuration'\nimport { IConfiguration } from '../interfaces/i-configuration'\nimport { IConfigurationManager } from '../interfaces/i-configuration-manager'\n\n/**\n * Merges a partial configuration with the default configuration\n * @param config - Partial configuration to merge with defaults\n * @returns Complete configuration with defaults applied\n */\nexport function mergeConfigurationWithDefaults(\n    this: IConfigurationManager,\n    config: Partial<IConfiguration>\n): IConfiguration {\n    const mergedConfig: IConfiguration = {\n        ...defaultConfiguration,\n        ...config,\n        cultures: {\n            ...defaultConfiguration.cultures,\n            ...config.cultures,\n            supportedCultures:\n                config.cultures?.supportedCultures ||\n                defaultConfiguration.cultures.supportedCultures,\n            lokalizeTokensReplacement:\n                config.cultures?.lokalizeTokensReplacement ||\n                defaultConfiguration.cultures.lokalizeTokensReplacement\n        },\n        rendering: {\n            ...defaultConfiguration.rendering,\n            ...config.rendering,\n            components: config.rendering?.components || defaultConfiguration.rendering.components,\n            commands: config.rendering?.commands || defaultConfiguration.rendering.commands,\n            suffixes: config.rendering?.suffixes || defaultConfiguration.rendering.suffixes\n        },\n        behavior: {\n            ...defaultConfiguration.behavior,\n            ...config.behavior,\n            form: {\n                ...defaultConfiguration.behavior.form,\n                ...config.behavior?.form\n            },\n            validations: {\n                ...defaultConfiguration.behavior.validations,\n                ...config.behavior?.validations,\n                patterns:\n                    config.behavior?.validations?.patterns ||\n                    defaultConfiguration.behavior.validations.patterns\n            },\n            customValidations:\n                config.behavior?.customValidations ||\n                defaultConfiguration.behavior.customValidations,\n            events: config.behavior?.events || defaultConfiguration.behavior.events\n        }\n    }\n\n    return mergedConfig\n}\n","import { IConfigurationManager } from '../interfaces/i-configuration-manager'\n\nexport const printConfiguration = function (this: IConfigurationManager): void {\n    if (this.configurations.length === 0) {\n        console.log('No configurations available')\n        return\n    }\n\n    // Prepare data for console.table\n    const tableData = this.configurations.map((config) => ({\n        name: config.name,\n        'target environment': config.targetEnvironment,\n        'is Active': config === this.activeConfiguration ? '✓' : '',\n        'JSON configuration': JSON.stringify(config, null, 2).substring(0, 100) + '...'\n    }))\n\n    console.table(tableData)\n}\n","import { IConfiguration } from '../interfaces/i-configuration'\nimport { IConfigurationManager } from '../interfaces/i-configuration-manager'\n\nexport const setConfiguration = function (\n    this: IConfigurationManager,\n    name: string,\n    config: IConfiguration\n): void {\n    // Ensure the configuration has the correct name\n    config.name = name\n\n    // Check if a configuration with this name already exists\n    const existingIndex = this.configurations.findIndex((c) => c.name === name)\n\n    if (existingIndex >= 0) {\n        // Replace the existing configuration\n        this.configurations[existingIndex] = config\n    } else {\n        // Add the new configuration\n        this.configurations.push(config)\n    }\n}\n","import { IConfiguration } from '../interfaces/i-configuration'\nimport { IConfigurationManager } from '../interfaces/i-configuration-manager'\n\nexport const useConfiguration = function (\n    this: IConfigurationManager,\n    name: string\n): IConfiguration | undefined {\n    // Find the configuration with the specified name\n    const configuration = this.configurations.find((c) => c.name === name)\n\n    if (configuration) {\n        // Set it as the active configuration\n        this.activeConfiguration = configuration\n        return configuration\n    }\n\n    return undefined\n}\n","import { defaultConfiguration } from '../default/default-configuration'\nimport { IConfiguration } from '../interfaces/i-configuration'\nimport { IConfigurationManager } from '../interfaces/i-configuration-manager'\n\n/**\n * Validates a configuration object against the required schema\n * @param config - Configuration object to validate\n * @returns Validated configuration with merged defaults\n */\nexport function validateConfiguration(\n    this: IConfigurationManager,\n    config: Partial<IConfiguration>\n): IConfiguration {\n    const errors: string[] = []\n\n    if (!config) {\n        console.warn('Configuration is required, using default configuration')\n        return defaultConfiguration\n    }\n\n    // Validate required top-level properties\n    if (config.name && typeof config.name !== 'string') {\n        errors.push('Configuration name must be a string')\n    }\n\n    if (config.targetEnvironment && typeof config.targetEnvironment !== 'string') {\n        errors.push('Target environment must be a string')\n    }\n\n    // Validate cultures if provided\n    if (config.cultures) {\n        if (\n            config.cultures.supportedCultures &&\n            !Array.isArray(config.cultures.supportedCultures)\n        ) {\n            errors.push('Supported cultures must be an array')\n        }\n        if (\n            config.cultures.lokalizeTokensReplacement &&\n            !Array.isArray(config.cultures.lokalizeTokensReplacement)\n        ) {\n            errors.push('Lokalize tokens replacement must be an array')\n        }\n    }\n\n    // Validate rendering if provided\n    if (config.rendering) {\n        if (config.rendering.components && !Array.isArray(config.rendering.components)) {\n            errors.push('Rendering components must be an array')\n        }\n        if (config.rendering.commands && !Array.isArray(config.rendering.commands)) {\n            errors.push('Rendering commands must be an array')\n        }\n        if (config.rendering.suffixes && !Array.isArray(config.rendering.suffixes)) {\n            errors.push('Rendering suffixes must be an array')\n        }\n    }\n\n    // Validate behavior if provided\n    if (config.behavior) {\n        if (\n            config.behavior.customValidations &&\n            !Array.isArray(config.behavior.customValidations)\n        ) {\n            errors.push('Custom validations must be an array')\n        }\n        if (config.behavior.events && !Array.isArray(config.behavior.events)) {\n            errors.push('Events must be an array')\n        }\n    }\n\n    if (errors.length > 0) {\n        console.warn('Configuration validation warnings:', errors)\n    }\n\n    // Merge with defaults and return\n    return this.mergeConfigurationWithDefaults(config)\n}\n","import { IServiceManager } from '@core/managers/service-manager/service-manager.types'\nimport { IConfiguration } from './interfaces/i-configuration'\nimport { IConfigurationManager } from './interfaces/i-configuration-manager'\nimport {\n    getConfigByName,\n    getDefaultConfiguration,\n    loadJson,\n    mergeConfigurationWithDefaults,\n    printConfiguration,\n    setConfiguration,\n    useConfiguration,\n    validateConfiguration\n} from './prototype'\n\n/**\n * Configuration Manager implementation following prototype pattern\n * Manages application configurations and provides methods to load, store, and retrieve configuration data\n */\nexport const ConfigurationManager = function (this: IConfigurationManager, sm: IServiceManager) {\n    this.sm = sm\n    this.configurations = []\n    this.activeConfiguration = {} as IConfiguration\n} as any as new (sm: IServiceManager) => IConfigurationManager\n\n// Attach prototype methods\nObject.assign(ConfigurationManager.prototype, {\n    getConfigByName,\n    setConfiguration,\n    useConfiguration,\n    loadJson,\n    printConfiguration,\n    validateConfiguration,\n    mergeConfigurationWithDefaults,\n    getDefaultConfiguration\n})\n","/**\n * Raw JSON configuration export\n * This exports the default configuration as a JSON object that can be used\n * for serialization, storage, or as a template for custom configurations.\n */\n\nimport defaultConfigJson from './default-configuration.json'\n\n// Export the raw JSON configuration\nexport const defaultConfigurationJson = defaultConfigJson\n\n// Export as a JSON string for easy serialization\nexport const defaultConfigurationJsonString = JSON.stringify(defaultConfigJson, null, 2)\n\n// Type-safe export with proper typing\nexport { defaultConfigJson as rawDefaultConfiguration }\n\n// Default configuration export as JSON\nexport { defaultConfigJson }\n","import { IServiceManager } from '@core/managers/service-manager/service-manager.types'\nimport { ConfigurationManager, IConfiguration, IConfigurationManager } from './index'\n\n/**\n * Configuration Manager Usage Examples\n *\n * This file demonstrates various ways to use the ConfigurationManager\n * in different scenarios including basic setup, custom configurations,\n * and advanced usage patterns.\n */\n\n// Mock service manager for examples\nconst mockServiceManager: IServiceManager = {} as IServiceManager\n\n/**\n * Example 1: Basic Setup and Default Configuration\n */\nexport function basicUsageExample() {\n    console.log('=== Basic Usage Example ===')\n\n    // Create configuration manager instance\n    const configManager: IConfigurationManager = new ConfigurationManager(mockServiceManager)\n\n    // Get default configuration\n    const defaultConfig = configManager.getDefaultConfiguration()\n    console.log('Default configuration name:', defaultConfig.name)\n\n    // Set and use the default configuration\n    configManager.setConfiguration('default', defaultConfig)\n    configManager.useConfiguration('default')\n\n    // Print all configurations\n    configManager.printConfiguration()\n\n    return configManager\n}\n\n/**\n * Example 2: Creating and Using Custom Configuration\n */\nexport function customConfigurationExample() {\n    console.log('=== Custom Configuration Example ===')\n\n    const configManager: IConfigurationManager = new ConfigurationManager(mockServiceManager)\n\n    // Create a custom configuration for production environment\n    const productionConfig: Partial<IConfiguration> = {\n        name: 'production-config',\n        targetEnvironment: 'production',\n        cultures: {\n            defaultCulture: {\n                name: 'en-US',\n                dateFormat: 'MM/dd/yyyy' as any,\n                timeFormat: 'hh:mm:ss tt',\n                currencySymbol: '$',\n                separator: '/'\n            },\n            supportedCultures: [],\n            lokalizeTokensReplacement: []\n        },\n        behavior: {\n            form: {\n                name: 'production-form-behavior',\n                enforceConfigurationCheck: true,\n                validationTriggers: ['onBlur', 'onSubmit', 'onChange']\n            },\n            validations: {\n                patterns: []\n            },\n            customValidations: [],\n            events: []\n        }\n    }\n\n    // Validate and merge with defaults\n    const validatedConfig = configManager.validateConfiguration(productionConfig)\n\n    // Set the configuration\n    configManager.setConfiguration('production', validatedConfig)\n\n    // Use the production configuration\n    const activeConfig = configManager.useConfiguration('production')\n    console.log('Active configuration:', activeConfig?.name)\n\n    return configManager\n}\n\n/**\n * Example 3: Loading Configuration from JSON\n */\nexport async function loadJsonConfigurationExample() {\n    console.log('=== Load JSON Configuration Example ===')\n\n    const configManager: IConfigurationManager = new ConfigurationManager(mockServiceManager)\n\n    try {\n        // Load configuration from JSON file\n        // This would typically be a path to your configuration file\n        const configPath = './default/default-configuration.json'\n        await configManager.loadJson(configPath)\n\n        // Use the loaded configuration\n        configManager.useConfiguration('default-formular-configuration')\n\n        console.log('Configuration loaded successfully from JSON')\n        configManager.printConfiguration()\n    } catch (error) {\n        console.error('Failed to load configuration:', error)\n    }\n\n    return configManager\n}\n\n/**\n * Example 4: Retrieving Specific Configuration Values\n */\nexport function getConfigurationValuesExample() {\n    console.log('=== Get Configuration Values Example ===')\n\n    const configManager: IConfigurationManager = new ConfigurationManager(mockServiceManager)\n\n    // Set up a configuration\n    const defaultConfig = configManager.getDefaultConfiguration()\n    configManager.setConfiguration('default', defaultConfig)\n    configManager.useConfiguration('default')\n\n    // Get specific configuration values using dotted notation\n    // Example: Getting a validation pattern\n    const emailPattern = configManager.getConfigByName<any>(\n        'behavior',\n        'validations',\n        'patterns',\n        'email-pattern'\n    )\n    console.log('Email pattern:', emailPattern)\n\n    // Example: Getting a rendering component\n    const drawerComponent = configManager.getConfigByName<any>('rendering', 'components', 'drawer')\n    console.log('Drawer component config:', drawerComponent)\n\n    // Example: Getting a command configuration\n    const primaryCommand = configManager.getConfigByName<any>('rendering', 'commands', 'primary')\n    console.log('Primary command config:', primaryCommand)\n\n    // Example: Getting form behavior\n    const formBehavior = configManager.getConfigByName<any>('behavior', 'form')\n    console.log('Form behavior:', formBehavior)\n\n    return configManager\n}\n\n/**\n * Example 5: Multi-Environment Configuration Setup\n */\nexport function multiEnvironmentExample() {\n    console.log('=== Multi-Environment Configuration Example ===')\n\n    const configManager: IConfigurationManager = new ConfigurationManager(mockServiceManager)\n\n    // Development configuration\n    const devConfig: Partial<IConfiguration> = {\n        name: 'development-config',\n        targetEnvironment: 'development',\n        behavior: {\n            form: {\n                name: 'dev-form-behavior',\n                enforceConfigurationCheck: true,\n                validationTriggers: ['onChange', 'onBlur'] // More relaxed validation\n            },\n            validations: { patterns: [] },\n            customValidations: [],\n            events: []\n        }\n    }\n\n    // Staging configuration\n    const stagingConfig: Partial<IConfiguration> = {\n        name: 'staging-config',\n        targetEnvironment: 'staging',\n        behavior: {\n            form: {\n                name: 'staging-form-behavior',\n                enforceConfigurationCheck: true,\n                validationTriggers: ['onBlur', 'onSubmit']\n            },\n            validations: { patterns: [] },\n            customValidations: [],\n            events: []\n        }\n    }\n\n    // Production configuration\n    const prodConfig: Partial<IConfiguration> = {\n        name: 'production-config',\n        targetEnvironment: 'production',\n        behavior: {\n            form: {\n                name: 'prod-form-behavior',\n                enforceConfigurationCheck: true,\n                validationTriggers: ['onSubmit'] // Strict validation only on submit\n            },\n            validations: { patterns: [] },\n            customValidations: [],\n            events: []\n        }\n    }\n\n    // Validate and set all configurations\n    const validatedDev = configManager.validateConfiguration(devConfig)\n    const validatedStaging = configManager.validateConfiguration(stagingConfig)\n    const validatedProd = configManager.validateConfiguration(prodConfig)\n\n    configManager.setConfiguration('development', validatedDev)\n    configManager.setConfiguration('staging', validatedStaging)\n    configManager.setConfiguration('production', validatedProd)\n\n    // Switch between environments\n    console.log('Setting up development environment...')\n    configManager.useConfiguration('development')\n    console.log('Active config:', configManager.activeConfiguration.name)\n\n    console.log('Switching to production environment...')\n    configManager.useConfiguration('production')\n    console.log('Active config:', configManager.activeConfiguration.name)\n\n    // Print all configurations\n    configManager.printConfiguration()\n\n    return configManager\n}\n\n/**\n * Example 6: Working with Cultures and Localization\n */\nexport function localizationExample() {\n    console.log('=== Localization Configuration Example ===')\n\n    const configManager: IConfigurationManager = new ConfigurationManager(mockServiceManager)\n\n    // Create configuration with multiple cultures\n    const multiCultureConfig: Partial<IConfiguration> = {\n        name: 'multi-culture-config',\n        targetEnvironment: 'production',\n        cultures: {\n            defaultCulture: {\n                name: 'en-US',\n                dateFormat: 'MM/dd/yyyy' as any,\n                timeFormat: 'hh:mm:ss tt',\n                currencySymbol: '$',\n                separator: '/'\n            },\n            supportedCultures: [\n                {\n                    name: 'fr-FR',\n                    dateFormat: 'dd/MM/yyyy' as any,\n                    timeFormat: 'HH:mm:ss',\n                    currencySymbol: '€',\n                    separator: '/'\n                },\n                {\n                    name: 'de-DE',\n                    dateFormat: 'dd/MM/yyyy' as any,\n                    timeFormat: 'HH:mm:ss',\n                    currencySymbol: '€',\n                    separator: '.'\n                }\n            ],\n            lokalizeTokensReplacement: [\n                {\n                    name: 'errorMessage',\n                    token: '{{error}}'\n                },\n                {\n                    name: 'fieldName',\n                    token: '{{field}}'\n                }\n            ]\n        }\n    }\n\n    const validatedConfig = configManager.validateConfiguration(multiCultureConfig)\n    configManager.setConfiguration('multi-culture', validatedConfig)\n    configManager.useConfiguration('multi-culture')\n\n    // Access culture-specific configurations\n    const defaultCulture = configManager.getConfigByName<any>('cultures', 'defaultCulture')\n    console.log('Default culture:', defaultCulture)\n\n    const tokenReplacements = configManager.getConfigByName<any>(\n        'cultures',\n        'lokalizeTokensReplacement'\n    )\n    console.log('Token replacements:', tokenReplacements)\n\n    return configManager\n}\n\n/**\n * Example 7: Advanced Validation Patterns Configuration\n */\nexport function validationPatternsExample() {\n    console.log('=== Validation Patterns Configuration Example ===')\n\n    const configManager: IConfigurationManager = new ConfigurationManager(mockServiceManager)\n\n    // Configuration with custom validation patterns\n    const validationConfig: Partial<IConfiguration> = {\n        name: 'validation-config',\n        targetEnvironment: 'development',\n        behavior: {\n            form: {\n                name: 'validation-form-behavior',\n                enforceConfigurationCheck: true,\n                validationTriggers: ['onChange', 'onBlur', 'onSubmit']\n            },\n            validations: {\n                patterns: [\n                    {\n                        name: 'strong-password',\n                        cultureName: 'en-US',\n                        regex: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}$/\n                    },\n                    {\n                        name: 'credit-card',\n                        cultureName: 'en-US',\n                        regex: /^\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}$/\n                    }\n                ]\n            },\n            customValidations: [],\n            events: [\n                {\n                    name: 'onValidate',\n                    triggerDelay: 300\n                }\n            ]\n        }\n    }\n\n    const validatedConfig = configManager.validateConfiguration(validationConfig)\n    configManager.setConfiguration('validation', validatedConfig)\n    configManager.useConfiguration('validation')\n\n    // Access validation patterns\n    const passwordPattern = configManager.getConfigByName<any>(\n        'behavior',\n        'validations',\n        'patterns',\n        'strong-password'\n    )\n    console.log('Strong password pattern:', passwordPattern)\n\n    const creditCardPattern = configManager.getConfigByName<any>(\n        'behavior',\n        'validations',\n        'patterns',\n        'credit-card'\n    )\n    console.log('Credit card pattern:', creditCardPattern)\n\n    return configManager\n}\n\n/**\n * Example 8: Runtime Configuration Updates\n */\nexport function runtimeConfigurationExample() {\n    console.log('=== Runtime Configuration Updates Example ===')\n\n    const configManager: IConfigurationManager = new ConfigurationManager(mockServiceManager)\n\n    // Start with default configuration\n    const defaultConfig = configManager.getDefaultConfiguration()\n    configManager.setConfiguration('runtime', defaultConfig)\n    configManager.useConfiguration('runtime')\n\n    console.log('Initial configuration:', configManager.activeConfiguration.name)\n\n    // Create updated configuration\n    const updatedConfig: IConfiguration = {\n        ...configManager.activeConfiguration,\n        targetEnvironment: 'production',\n        behavior: {\n            ...configManager.activeConfiguration.behavior,\n            form: {\n                ...configManager.activeConfiguration.behavior.form,\n                validationTriggers: ['onSubmit'] // Changed from default\n            }\n        }\n    }\n\n    // Update the configuration\n    configManager.setConfiguration('runtime', updatedConfig)\n\n    // Reactivate the configuration to reflect changes\n    configManager.useConfiguration('runtime')\n\n    console.log(\n        'Updated configuration environment:',\n        configManager.activeConfiguration.targetEnvironment\n    )\n    console.log(\n        'Updated validation triggers:',\n        configManager.activeConfiguration.behavior.form.validationTriggers\n    )\n\n    return configManager\n}\n\n/**\n * Example 9: Error Handling and Validation\n */\nexport function errorHandlingExample() {\n    console.log('=== Error Handling Example ===')\n\n    const configManager: IConfigurationManager = new ConfigurationManager(mockServiceManager)\n\n    // Test with invalid configuration\n    const invalidConfig = {\n        name: 123, // Invalid type\n        targetEnvironment: null, // Invalid value\n        cultures: 'not-an-object' // Invalid type\n    }\n\n    try {\n        // This should handle validation gracefully\n        const validatedConfig = configManager.validateConfiguration(invalidConfig as any)\n        console.log('Validation completed, using defaults where necessary')\n        console.log('Final config name:', validatedConfig.name)\n    } catch (error) {\n        console.error('Validation error:', error)\n    }\n\n    // Test with null/undefined configuration\n    const nullConfig = configManager.validateConfiguration(null as any)\n    console.log('Null config handled, using default:', nullConfig.name)\n\n    return configManager\n}\n\n/**\n * Run all examples\n */\nexport function runAllExamples() {\n    console.log('🚀 Running Configuration Manager Examples\\n')\n\n    try {\n        basicUsageExample()\n        console.log('\\n' + '='.repeat(50) + '\\n')\n\n        customConfigurationExample()\n        console.log('\\n' + '='.repeat(50) + '\\n')\n\n        getConfigurationValuesExample()\n        console.log('\\n' + '='.repeat(50) + '\\n')\n\n        multiEnvironmentExample()\n        console.log('\\n' + '='.repeat(50) + '\\n')\n\n        localizationExample()\n        console.log('\\n' + '='.repeat(50) + '\\n')\n\n        validationPatternsExample()\n        console.log('\\n' + '='.repeat(50) + '\\n')\n\n        runtimeConfigurationExample()\n        console.log('\\n' + '='.repeat(50) + '\\n')\n\n        errorHandlingExample()\n        console.log('\\n' + '='.repeat(50) + '\\n')\n\n        console.log('✅ All examples completed successfully!')\n    } catch (error) {\n        console.error('❌ Error running examples:', error)\n    }\n}\n\n// Export individual examples for selective usage\nexport const examples = {\n    basic: basicUsageExample,\n    custom: customConfigurationExample,\n    loadJson: loadJsonConfigurationExample,\n    getValues: getConfigurationValuesExample,\n    multiEnvironment: multiEnvironmentExample,\n    localization: localizationExample,\n    validationPatterns: validationPatternsExample,\n    runtime: runtimeConfigurationExample,\n    errorHandling: errorHandlingExample,\n    runAll: runAllExamples\n}\n","/**\n * Adds ARIA attributes to an element by its ID.\n *\n * Iterates over the provided ARIA attributes and sets them on the element with the given ID.\n * If the element does not exist in the manager's references, a warning is logged via the tracker.\n *\n * @template T - The type of HTMLElement managed.\n * @param {string} id - The ID of the element to add ARIA attributes to.\n * @param {IAria[]} arias - The ARIA attributes to add (name/value pairs).\n */\nimport { IAria, IDomManager } from '../dom-manager.types'\n\nexport function dmAddArias<T extends HTMLElement>(\n    this: IDomManager<T>,\n    id: string,\n    arias: IAria[]\n) {\n    const element = this.dmGet(id)\n    if (!element) {\n        this.tracker?.internalWarning(\n            'DomManager.dmAddArias',\n            `The element does not exist in references: ${id}`\n        )\n        return\n    }\n    for (const a of arias) {\n        element.setAttribute(`aria-${a.name}`, a.value)\n    }\n}\n","/**\n * Sets ARIA attributes for an element by its ID.\n *\n * Sets the 'aria-labelledby' and 'name' attributes for the specified element.\n * If the element does not exist in the manager's references, a warning is logged via the tracker.\n *\n * @template T - The type of HTMLElement managed.\n * @param {string} id - The ID of the element to set ARIA attributes for.\n * @param {string} name - The name to set for the element.\n */\n\nimport { IDomManager } from '../dom-manager.types'\n\n/**\n * Sets ARIA attributes for an element by its ID.\n * @param id - The ID of the element to set ARIA attributes for.\n * @param name - The name to set for the element.\n */\nexport function dmAriaSet<T extends HTMLElement>(this: IDomManager<T>, id: string, name: string) {\n    const element = this.dmGet(id)\n    if (!element) {\n        this.tracker?.internalWarning(\n            'DomManager.dmAriaSet',\n            `The element does not exist in references: ${id}`\n        )\n        return\n    }\n    element.setAttribute('aria-labelledby', `${id}${this.labelId}`)\n    element.setAttribute('name', name)\n}\n","/**\n * Clears all registered elements by resetting their values and states.\n *\n * Iterates over all managed elements and resets their ARIA checked state, value, and checked property.\n *\n * @template T - The type of HTMLElement managed.\n */\nimport { IDomManager } from '../dom-manager.types'\n\n/**\n * Clears all registered elements by resetting their values and states.\n */\nexport function dmClear<T extends HTMLElement>(this: IDomManager<T>) {\n    for (const e of this.elements) {\n        e.ariaChecked = 'false'\n        ;(e as unknown as HTMLInputElement).value = ''\n        ;(e as unknown as HTMLInputElement).checked = false\n    }\n}\n","/**\n * Checks if an element with the given ID exists in the registered elements.\n *\n * @template T - The type of HTMLElement managed.\n * @param {string} id - The ID of the element to check.\n * @returns {boolean} True if the element exists, otherwise false.\n */\nimport { IDomManager } from '../dom-manager.types'\n\n/**\n * Checks if an element with the given ID exists in the registered elements.\n * @param id - The ID of the element to check.\n * @returns True if the element exists, otherwise false.\n */\nexport function dmExists<T extends HTMLElement>(this: IDomManager<T>, id: string) {\n    return !!this.elements.find((o) => o.id === id)\n}\n","/**\n * Retrieves an element by its ID from the registered elements.\n *\n * @template T - The type of HTMLElement managed.\n * @param {string} id - The ID of the element to retrieve.\n * @returns {T | null} The element if found, otherwise null.\n */\nimport { IDomManager } from '../dom-manager.types'\n\n/**\n * Retrieves an element by its ID from the registered elements.\n * @param id - The ID of the element to retrieve.\n * @returns The element if found, otherwise null.\n */\nexport function dmGet<T extends HTMLElement>(this: IDomManager<T>, id: string) {\n    return this.elements.find((o) => o.id === id) ?? null\n}\n","/**\n * Registers a new element if it does not already exist.\n *\n * If the element is already registered, a warning is logged via the tracker. Otherwise, the element is added to the manager.\n *\n * @template T - The type of HTMLElement managed.\n * @param {T | null} element - The element to register.\n */\nimport { IDomManager } from '../dom-manager.types'\n\n/**\n * Registers a new element if it does not already exist.\n * @param element - The element to register.\n */\nexport function dmRegister<T extends HTMLElement>(this: IDomManager<T>, element: T | null) {\n    if (!element) return\n\n    if (this.dmExists(element.id)) {\n        this.tracker?.internalWarning(\n            'DomManager.register',\n            `The element you try to add already exists: ${element.id}`\n        )\n        return\n    }\n\n    // Capture initial className as data-class for dynamic class updates\n    // This preserves the user's className while formular manages state classes\n    if (element.className) {\n        element.setAttribute('data-class', element.className)\n    }\n\n    this.elements.push(element)\n}\n","/**\n * Registers an element by its ID if it exists in the DOM.\n *\n * If the element is already registered, it is not added again. If the element does not exist in the DOM, an error is logged via the tracker.\n *\n * @template T - The type of HTMLElement managed.\n * @param {string} id - The ID of the element to register.\n */\nimport { IDomManager } from '../dom-manager.types'\n\n/**\n * Registers an element by its ID if it exists in the DOM.\n * @param id - The ID of the element to register.\n */\nexport function dmRegisterById<T extends HTMLElement>(this: IDomManager<T>, id: string) {\n    if (!id) return\n\n    if (this.dmExists(id)) {\n        return\n    }\n    const _tmpElement = document.getElementById(id) as T\n    if (!_tmpElement) {\n        this.tracker?.internalError(\n            'DomManager.registerById',\n            `The element you try to reference doesn't exist in the DOM: ${id}`\n        )\n        return\n    }\n    this.elements.push(_tmpElement)\n}\n","/**\n * Sets the checked state of an element by its ID.\n *\n * If the element does not exist in the manager's references, an error is logged via the tracker.\n *\n * @template T - The type of HTMLElement managed.\n * @param {string} id - The ID of the element to set the checked state for.\n * @param {boolean} value - The checked state to set (true or false).\n */\nimport { IDomManager } from '../dom-manager.types'\n\n/**\n * Sets the checked state of an element by its ID.\n * @param id - The ID of the element to set the checked state for.\n * @param value - The checked state to set (true or false).\n */\nexport function dmSetChecked<T extends HTMLElement>(\n    this: IDomManager<T>,\n    id: string,\n    value: boolean\n) {\n    const element = this.dmGet(id)\n    if (!element) {\n        this.tracker?.internalError(\n            'DomManager.dmSetChecked',\n            `The element does not exist in references: ${id}`\n        )\n        return\n    }\n    ;(element as unknown as HTMLInputElement).checked = value\n}\n","/**\n * Sets the class name of an element by its ID.\n *\n * If the element does not exist in the manager's references, an error is logged via the tracker.\n *\n * @template T - The type of HTMLElement managed.\n * @param {string} id - The ID of the element to set the class name for.\n * @param {string} rules - The class name(s) to set.\n */\nimport { IDomManager } from '../dom-manager.types'\n\n/**\n * Sets the class name of an element by its ID.\n * @param id - The ID of the element to set the class name for.\n * @param rules - The class name(s) to set.\n */\nexport function dmSetClass<T extends HTMLElement>(this: IDomManager<T>, id: string, rules: string) {\n    const element = this.dmGet(id)\n    if (!element) {\n        this.tracker?.internalError(\n            'DomManager.dmSetClass',\n            `The element does not exist in references: ${id}`\n        )\n        return\n    }\n    ;(element as unknown as HTMLInputElement).className = rules\n}\n","/**\n * Enables or disables an element by its ID.\n *\n * If the element does not exist in the manager's references, the function returns silently. If disabling, the element is blurred.\n *\n * @template T - The type of HTMLElement managed.\n * @param {string} id - The ID of the element to enable or disable.\n * @param {boolean} enabled - True to enable, false to disable.\n */\nimport { IDomManager } from '../dom-manager.types'\n\n/**\n * Enables or disables an element by its ID.\n * @param id - The ID of the element to enable or disable.\n * @param enabled - True to enable, false to disable.\n */\nexport function dmSetEnabled<T extends HTMLElement>(\n    this: IDomManager<T>,\n    id: string,\n    enabled: boolean\n) {\n    const ele = this.dmGet(id)\n    if (!ele) return\n    if (!enabled) {\n        ele?.blur?.()\n    }\n    ;(ele as unknown as HTMLInputElement).ariaDisabled = !enabled ? 'true' : 'false'\n    ;(ele as unknown as HTMLInputElement).disabled = !enabled ? true : false\n}\n","/**\n * Sets focus to an element by its ID. If the element is not found, focuses on the first registered element.\n *\n * @template T - The type of HTMLElement managed.\n * @param {string} id - The ID of the element to focus.\n */\nimport { IDomManager } from '../dom-manager.types'\n\n/**\n * Sets focus to an element by its ID. If the element is not found, focuses on the first registered element.\n * @param id - The ID of the element to focus.\n */\nexport function dmSetFocus<T extends HTMLElement>(this: IDomManager<T>, id: string) {\n    const ele = this.dmGet(id)\n    if (!ele) {\n        this.elements?.[0]?.focus()\n    } else {\n        ele.focus()\n    }\n}\n","/**\n * Sets the selected value of an element by its ID.\n *\n * If the element does not exist in the manager's references, an error is logged via the tracker.\n *\n * @template T - The type of HTMLElement managed.\n * @param {string} id - The ID of the element to set the selected value for.\n * @param {string | null} selectionValue - The value to set as selected.\n */\nimport { IDomManager } from '../dom-manager.types'\n\n/**\n * Sets the selected value of an element by its ID.\n * @param id - The ID of the element to set the selected value for.\n * @param selectionValue - The value to set as selected.\n */\nexport function dmSetSelected<T extends HTMLElement>(\n    this: IDomManager<T>,\n    id: string,\n    selectionValue: string | null\n) {\n    const element = this.dmGet(id)\n    if (!element) {\n        this.tracker?.internalError(\n            'DomManager.dmSetSelected',\n            `The element does not exist in references: ${id}`\n        )\n        return\n    }\n    ;(element as unknown as HTMLInputElement).value = selectionValue ?? ''\n}\n","/**\n * Sets the value of an element by its ID.\n *\n * If the element does not exist in the manager's references, an error is logged via the tracker. The value is only updated if it differs from the current value.\n *\n * @template T - The type of HTMLElement managed.\n * @param {string} id - The ID of the element to set the value for.\n * @param {string} value - The value to set.\n */\nimport { IDomManager } from '../dom-manager.types'\n\n/**\n * Sets the value of an element by its ID.\n * @param id - The ID of the element to set the value for.\n * @param value - The value to set.\n */\nexport function dmSetValue<T extends HTMLElement>(this: IDomManager<T>, id: string, value: string) {\n    const element = this.dmGet(id) as unknown as HTMLInputElement | undefined\n    if (!element) {\n        this.tracker?.internalError(\n            'DomManager.dmSetValue',\n            `The element does not exist in references: ${id}`\n        )\n        return\n    }\n    if (element.value !== value) {\n        /** we update only when value is setted by the model */\n        element.value = value\n    }\n}\n","/**\n * Sets ARIA attributes for an element by its ID.\n *\n * Sets a specific ARIA attribute (name/value pair) for the specified element. If the element does not exist in the manager's references, a warning is logged via the tracker.\n *\n * @template T - The type of HTMLElement managed.\n * @param {string} id - The ID of the element to set ARIA attributes for.\n * @param {IAria} aria - The ARIA attribute to set (name/value pair).\n */\nimport { IAria, IDomManager } from '../dom-manager.types'\n\n/**\n * Sets ARIA attributes for an element by its ID.\n * @param id - The ID of the element to set ARIA attributes for.\n * @param name - The name to set for the element.\n */\nexport function dmUpdateAria<T extends HTMLElement>(this: IDomManager<T>, id: string, aria: IAria) {\n    const element = this.dmGet(id)\n    if (!element) {\n        this.tracker?.internalWarning(\n            'DomManager.dmUpdateAria',\n            `The element does not exist in references: ${id}`\n        )\n        return\n    }\n    const ariaName = `aria-${aria.name}`\n    const ariaValue = aria.value\n    element.setAttribute(ariaName, ariaValue)\n}\n","import { IDomManager } from '../dom-manager.types'\n\n/**\n * Extends the DomManager with additional functionality from an extension object.\n * This method allows adding new methods and properties to a DomManager instance\n * without modifying the core implementation, following the Open/Closed Principle.\n *\n * @param {string} extensionName - The name of the extension for tracking purposes\n * @param {Record<string, any>} extension - An object containing methods and properties to add to this manager instance\n * @this {IDomManager}\n *\n * @example\n * ```typescript\n * const webComponentExtension = {\n *   createShadowRoot: function(element, options) {\n *     return element.attachShadow(options);\n *   }\n * };\n *\n * domManager.extend('webComponents', webComponentExtension);\n * domManager.createShadowRoot(element, { mode: 'open' });\n * ```\n */\nexport const extend = function (\n    this: IDomManager<HTMLElement>,\n    extensionName: string,\n    extension: Record<string, any>\n): void {\n    // Initialize extensions map if it doesn't exist\n    this.extensions = this.extensions ?? new Map<string, Record<string, any>>()\n\n    // Track the extension by name\n    this.extensions.set(extensionName, extension)\n\n    // Merge extension methods into this instance\n    Object.assign(this, extension)\n}\n","import { IDomManager } from '../dom-manager.types'\n\n/**\n * Checks if a specific extension has been loaded into this DomManager instance.\n * This method provides a way to verify extension availability before attempting\n * to use extension-specific features.\n *\n * @param {string} extensionName - The name of the extension to check for\n * @returns {boolean} True if the extension exists, false otherwise\n * @this {IDomManager}\n *\n * @example\n * ```typescript\n * if (domManager.hasExtension('webComponents')) {\n *   domManager.createShadowRoot(element, { mode: 'open' });\n * }\n * ```\n */\nexport const hasExtension = function (\n    this: IDomManager<HTMLElement>,\n    extensionName: string\n): boolean {\n    return this.extensions?.has(extensionName) ?? false\n}\n","/**\n * Initializes the DomManager instance and sets it as initialized.\n *\n * Logs the initialization event and marks the manager as initialized.\n *\n * @template T - The type of HTMLElement managed.\n */\nimport { IDomManager } from '../dom-manager.types'\n\nexport const initialize = function <T extends HTMLElement>(this: IDomManager<T>) {\n    // this.tracker = tracker\n    this.isInitialized = true\n}\n","import { IConfigurationManager, ISuffix } from '../configuration-manager'\nimport { SConfigurationManager } from '../configuration-manager/interfaces/i-configuration-manager'\nimport { IServiceManager } from '../types'\nimport { IDomManager } from './dom-manager.types'\n/**\n * DomManager is a prototype-based manager for handling collections of DOM elements and their state.\n *\n * @template T - The type of HTMLElement managed.\n * @implements {IDomManager<T>}\n *\n * @property {T[]} elements - The managed DOM elements.\n * @property {any} tracker - Optional tracker for internal state or observers.\n * @property {boolean} isInitialized - Indicates if the manager has been initialized.\n * @property {string} dependencyName - The name of the dependency, set to 'DomManager'.\n *\n * Prototype methods (assigned below) provide operations for registration, state management, ARIA, and more.\n *\n * Example usage:\n *   const manager = new DomManager();\n *   manager.initialize();\n *   manager.dmRegister(element);\n */\nimport { dmAddArias } from './prototype/dm-add-arias'\nimport { dmAriaSet } from './prototype/dm-aria-set'\nimport { dmClear } from './prototype/dm-clear'\nimport { dmExists } from './prototype/dm-exists'\nimport { dmGet } from './prototype/dm-get'\nimport { dmRegister } from './prototype/dm-register'\nimport { dmRegisterById } from './prototype/dm-register-by-id'\nimport { dmSetChecked } from './prototype/dm-set-checked'\nimport { dmSetClass } from './prototype/dm-set-class'\nimport { dmSetEnabled } from './prototype/dm-set-enabled'\nimport { dmSetFocus } from './prototype/dm-set-focus'\nimport { dmSetSelected } from './prototype/dm-set-selected'\nimport { dmSetValue } from './prototype/dm-set-value'\nimport { dmUpdateAria } from './prototype/dm-update-aria'\nimport { extend } from './prototype/extend'\nimport { hasExtension } from './prototype/has-extension'\nimport { initialize } from './prototype/initialize'\n\n/**\n * Constructs a new DomManager instance.\n *\n * @constructor\n * @template T - The type of HTMLElement managed.\n * @this {IDomManager<T>}\n */\n/**\n * Manages a collection of DOM elements and provides lifecycle management for them.\n *\n * @template T - The type of HTMLElement managed by this instance.\n * @param this - The instance context implementing {@link IDomManager}.\n * @param serviceManager - The service manager used for dependency injection and service resolution.\n *\n * @remarks\n * - Initializes internal state, including the managed elements, tracker, and initialization flag.\n * - Defines a read-only `dependencyName` property for identification.\n *\n * @example\n * ```typescript\n * const manager = new DomManager<HTMLDivElement>(serviceManager);\n * ```\n */\nexport const DomManager = function <T extends HTMLElement>(\n    this: IDomManager<T>,\n    serviceManager: IServiceManager\n) {\n    /**\n     *  The service manager used for dependency injection and service resolution.\n     *  @type {IServiceManager}\n     *  @remarks\n     *  This manager is used to resole dependencies and services required by the DomManager.\n     */\n    this.serviceManager = serviceManager || null\n    /**\n     * The managed DOM elements.\n     * @type {T[]}\n     */\n    this.elements = []\n    /**\n     * Optional tracker for internal state or observers.\n     * @type {any}\n     */\n    this.tracker = null\n    /**\n     * Indicates if the manager has been initialized.\n     * @type {boolean}\n     */\n    this.isInitialized = false\n\n    const config = this.serviceManager?.lazy<IConfigurationManager>(SConfigurationManager)?.()\n    const rawLabelId = config?.getConfigByName<ISuffix>('rendering', 'suffixes', 'labelId') ?? null\n    const rawDescribedById =\n        config?.getConfigByName<ISuffix>('rendering', 'suffixes', 'describedById') ?? null\n\n    // Fix for configuration returning object instead of string\n\n    Object.defineProperty(this, 'describedById', {\n        value: rawDescribedById?.value ?? '-described-by',\n        writable: false, // Prevent modification\n        configurable: false, // Prevent deletion or redefinition,\n        enumerable: true // Make it enumerable for iteration\n    })\n\n    Object.defineProperty(this, 'labelId', {\n        value: rawLabelId?.value ?? '-label',\n        writable: false, // Prevent modification\n        configurable: false, // Prevent deletion or redefinition,\n        enumerable: true\n    })\n\n    Object.defineProperty(this, 'dependencyName', {\n        value: DomManager.name,\n        writable: false, // Prevent modification\n        configurable: false, // Prevent deletion or redefinition,\n        enumerable: true\n    })\n} as any as IDomManager<any>\n\n/**\n * Assigns prototype methods to DomManager for DOM operations, registration, ARIA, and state management.\n */\n/**\n * Prototype methods are assigned from the following files:\n *\n * - ./prototype/initialize: Initializes the DomManager instance.\n * - ./prototype/dm-get: Retrieves a managed element.\n * - ./prototype/dm-exists: Checks if an element exists in the manager.\n * - ./prototype/dm-register: Registers a new element.\n * - ./prototype/dm-register-by-id: Registers an element by its ID.\n * - ./prototype/dm-set-focus: Sets focus on an element.\n * - ./prototype/dm-set-enabled: Enables or disables an element.\n * - ./prototype/dm-set-value: Sets the value of an element.\n * - ./prototype/dm-clear: Clears the state of the manager or elements.\n * - ./prototype/dm-set-checked: Sets the checked state of an element.\n * - ./prototype/dm-set-class: Sets the class of an element.\n * - ./prototype/dm-set-selected: Sets the selected state of an element.\n * - ./prototype/dm-add-arias: Adds ARIA attributes to elements.\n * - ./prototype/dm-aria-set: Sets a specific ARIA attribute.\n * - ./prototype/dm-update-aria: Updates ARIA attributes.\n * - ./prototype/extend: Adds extension methods to DomManager.\n * - ./prototype/has-extension: Checks for the existence of extension methods.\n */\nObject.assign(DomManager.prototype, {\n    initialize,\n    dmGet,\n    dmExists,\n    dmRegister,\n    dmRegisterById,\n    dmSetFocus,\n    dmSetEnabled,\n    dmSetValue,\n    dmClear,\n    dmSetChecked,\n    dmSetClass,\n    dmSetSelected,\n    dmAddArias,\n    dmAriaSet,\n    dmUpdateAria,\n    extend,\n    hasExtension\n})\n","import { EventsType, IEvents } from '@core/framework/events/events.types'\n\nexport interface ILatestCall {\n    data?: IEvents\n    timeoutId?: number | ReturnType<typeof setTimeout>\n}\n\nexport const latestCalls = new Map<EventsType, ILatestCall>()\n","import { EventsType } from '@core/framework/events/events.types'\nimport { latestCalls } from './global'\n\nexport const clearCurrentCall = function (type: EventsType): void {\n    if (latestCalls.has(type)) {\n        const call = latestCalls.get(type)\n        if (call?.timeoutId) {\n            clearTimeout(call.timeoutId)\n        }\n        // latestCalls.delete(type)\n    }\n}\n","import { EventsType } from '@core/framework/events/events.types'\nimport { latestCalls } from './global'\n\nexport const removeCallByType = function (type: EventsType): void {\n    latestCalls.delete(type)\n}\n","import { EventsType, IEvents } from '@core/framework/events/events.types'\nimport { latestCalls } from './global'\n\nexport const takeLatest = function <T extends IEvents>(\n    type: EventsType,\n    timeoutId: ReturnType<typeof setTimeout>,\n    data?: T\n): void {\n    latestCalls.set(type, { data, timeoutId })\n}\n","import { EventsType } from '@core/framework/events/events.types'\nimport { clearCurrentCall } from '@core/framework/optimization/latest-calls/clear-current-call'\nimport { removeCallByType } from '@core/framework/optimization/latest-calls/remove-call-by-type'\nimport { takeLatest } from '@core/framework/optimization/latest-calls/take-latest'\nimport { IObservableSubject } from '../observable-subject.types'\n\n/**\n * Executes observer functions for a specific channel or all observers with debouncing.\n *\n * @param channelOrDelay - Channel name (string) or delay (number, legacy)\n * @param delay - Delay in milliseconds (only when channel provided)\n */\nconst triggenrName: EventsType = 'onObserve'\n\nexport function debounceTrigger<T = any>(\n    this: IObservableSubject,\n    channelOrDelay?: string | number,\n    delay: number = 0\n) {\n    // Determine if this is a channel-based or legacy call\n    const isChannelBased = typeof channelOrDelay === 'string'\n    const channel = isChannelBased ? channelOrDelay : undefined\n    const actualDelay = isChannelBased ? delay : (channelOrDelay as number) || 0\n\n    // console.log('-----debounceTrigger called:', { isChannelBased, channel, actualDelay })\n\n    // Use channel-specific key for debouncing to prevent cross-channel cancellation\n    const debounceKey = isChannelBased && channel ? `${triggenrName}:${channel}` : triggenrName\n\n    clearCurrentCall(debounceKey as EventsType)\n\n    const timeoutId: number | NodeJS.Timeout = setTimeout(() => {\n        // console.log('-----debounceTrigger timeout executing for channel:', channel)\n        if (isChannelBased && channel) {\n            // Channel-based debounced trigger\n            const channelObservers = this.channels.get(channel)\n            // console.log(\n            //     '-----debounceTrigger channel observers:',\n            //     channelObservers ? 'found' : 'NOT FOUND',\n            //     channelObservers?.strong.length,\n            //     channelObservers?.weak.length\n            // )\n            if (channelObservers) {\n                channelObservers.strong.forEach((obs) => {\n                    if (obs) {\n                        // console.log('-----debounceTrigger calling strong observer:', obs.name)\n                        obs?.call(this)\n                    }\n                })\n\n                channelObservers.weak.forEach((ref) => {\n                    const obs = ref.deref()\n                    if (obs) {\n                        obs?.call(this)\n                    }\n                })\n            }\n        } else {\n            // Legacy global debounced trigger\n            this.observersStrong.forEach((obs) => {\n                if (obs) {\n                    obs?.call(this)\n                }\n            })\n\n            this.observersWeak.forEach((ref) => {\n                const obs = ref.deref()\n                if (obs) {\n                    obs?.call(this)\n                }\n            })\n        }\n\n        removeCallByType(debounceKey as EventsType)\n    }, actualDelay)\n\n    takeLatest(debounceKey as EventsType, timeoutId)\n}\n","import { IObservableSubject, TObservableFunction } from '../observable-subject.types'\n\n/**\n * Adds one or more observer functions to the list of observers.\n * Supports both legacy (global) and channel-based subscriptions.\n *\n * @param channelOrFn - Channel name (string) or observer function (legacy)\n * @param fnOrUseWeak - Observer function if channel provided, or useWeak boolean (legacy)\n * @param useWeak - Whether to use weak reference (only when channel provided)\n */\nexport function subscribe<T = any>(\n    this: IObservableSubject<T>,\n    channelOrFn: string | TObservableFunction<T>,\n    fnOrUseWeak?: TObservableFunction<T> | boolean,\n    useWeak: boolean = false\n) {\n    // Determine if this is a channel-based or legacy call\n    const isChannelBased = typeof channelOrFn === 'string'\n    const channel = isChannelBased ? channelOrFn : undefined\n    const obs = isChannelBased\n        ? (fnOrUseWeak as TObservableFunction<T>)\n        : (channelOrFn as TObservableFunction<T>)\n    const useWeakRef = isChannelBased ? useWeak : (fnOrUseWeak as boolean) || false\n\n    if (isChannelBased && channel) {\n        // Channel-based subscription\n        // console.log('-----ObservableSubject.subscribe to channel:', channel, 'callback:', obs.name)\n        if (!this.channels.has(channel)) {\n            this.channels.set(channel, { weak: [], strong: [] })\n        }\n        const channelObservers = this.channels.get(channel)!\n\n        if (useWeakRef) {\n            if (channelObservers.weak.find((o) => o.deref() === obs)) return\n            const ref = new WeakRef(obs)\n            channelObservers.weak.push(ref)\n            this.cleanupRegistry.register(obs, ref)\n        } else {\n            if (channelObservers.strong.find((o) => o === obs)) return\n            channelObservers.strong.push(obs)\n        }\n    } else {\n        // Legacy global subscription\n        if (useWeakRef) {\n            if (\n                this.observersWeak.find(\n                    (o: WeakRef<TObservableFunction>) => obs.name.toString() === obs.name\n                )\n            )\n                return\n\n            const ref = new WeakRef(obs)\n            this.observersWeak.push(ref)\n            this.cleanupRegistry.register(obs, ref)\n        } else {\n            if (\n                this.observersStrong.find(\n                    (o: TObservableFunction<T>) => obs.name.toString() === obs.name\n                )\n            )\n                return\n\n            this.observersStrong.push(obs)\n        }\n    }\n}\n","import { IObservableSubject } from '../observable-subject.types'\n\n/**\n * Executes observer functions for a specific channel or all observers if no channel specified.\n *\n * @param channel - Optional channel name to trigger specific subscribers\n */\nexport function trigger<T = any>(this: IObservableSubject, channel?: string) {\n    if (channel) {\n        // Channel-based trigger - only notify subscribers of this channel\n        const channelObservers = this.channels.get(channel)\n        if (!channelObservers) return\n\n        channelObservers.strong.forEach((obs) => {\n            if (obs) {\n                obs?.call(this)\n            }\n        })\n\n        channelObservers.weak.forEach((ref) => {\n            const obs = ref.deref()\n            if (obs) {\n                obs?.call(this)\n            }\n        })\n    } else {\n        // Legacy global trigger - notify all observers\n        this.observersStrong.forEach((obs) => {\n            if (obs) {\n                obs?.call(this)\n            }\n        })\n\n        this.observersWeak.forEach((ref) => {\n            const obs = ref.deref()\n            if (obs) {\n                obs?.call(this)\n            }\n        })\n    }\n}\n","import { IObservableSubject, TObservableFunction } from '../observable-subject.types'\n\n/**\n * Removes one or more observer functions from the list of observers.\n * Supports both legacy (global) and channel-based unsubscriptions.\n *\n * @param channelOrFn - Channel name (string) or observer function (legacy)\n * @param fnOrForWeak - Observer function if channel provided, or forWeak boolean (legacy)\n * @param forWeak - Whether to remove from weak references (only when channel provided)\n */\nexport function unSubscribe<T = any>(\n    this: IObservableSubject,\n    channelOrFn: string | TObservableFunction<T>,\n    fnOrForWeak?: TObservableFunction<T> | boolean,\n    forWeak?: boolean\n) {\n    // Determine if this is a channel-based or legacy call\n    const isChannelBased = typeof channelOrFn === 'string'\n    const channel = isChannelBased ? channelOrFn : undefined\n    const fn = isChannelBased\n        ? (fnOrForWeak as TObservableFunction<T>)\n        : (channelOrFn as TObservableFunction<T>)\n    const isWeak = isChannelBased ? forWeak || false : (fnOrForWeak as boolean)\n\n    if (isChannelBased && channel) {\n        // Channel-based unsubscription\n        const channelObservers = this.channels.get(channel)\n        if (!channelObservers) return\n\n        if (isWeak) {\n            channelObservers.weak = channelObservers.weak.filter((o) => o.deref() !== fn)\n            this.cleanupRegistry.unregister(fn)\n        } else {\n            channelObservers.strong = channelObservers.strong.filter((o) => o !== fn)\n        }\n\n        // Clean up empty channels\n        if (channelObservers.weak.length === 0 && channelObservers.strong.length === 0) {\n            this.channels.delete(channel)\n        }\n    } else {\n        // Legacy global unsubscription\n        if (isWeak) {\n            this.observersWeak = [\n                ...this.observersWeak.filter((o: WeakRef<TObservableFunction>) => o.deref() !== fn)\n            ]\n            this.cleanupRegistry.unregister(fn)\n        } else {\n            this.observersStrong = [\n                ...this.observersStrong.filter((o: TObservableFunction<T>) => o !== fn)\n            ]\n        }\n    }\n}\n","import { IObservableSubject } from '../observable-subject.types'\n\n/**\n * Removes all observer functions from the list of observers.\n */\nexport function unSubscribeAll(this: IObservableSubject) {\n    for (const fn of this.observersStrong) {\n        // console.log('Unsubscribing strong observer:', fn.name)\n    }\n\n    for (const fn of this.observersWeak) {\n        // console.log('Unsubscribing weak observer:', fn.deref()?.name)\n        this.cleanupRegistry.unregister(fn)\n    }\n    this.observersWeak = []\n    this.observersStrong = []\n}\n","/**\n * FORMULAR - Observable Subject Pattern\n * Copyright (c) 2025 Piana Tadeo\n * Licensed under MIT License\n *\n * Reactive programming implementation for signals-based state management\n */\n\nimport { IObservableSubject } from './observable-subject.types'\nimport { debounceTrigger } from './prototype/debounce-trigger'\nimport { subscribe } from './prototype/subscribe'\nimport { trigger } from './prototype/trigger'\nimport { unSubscribe } from './prototype/unsubscribe'\nimport { unSubscribeAll } from './prototype/unsubscribe-all'\n\n/**\n * Creates a new DataMutationObserverSubject instance.\n *\n * @param this - The context object which will hold the observers.\n * @param fns - A list of observable functions to be added as observers.\n *\n * @remarks\n * This function initializes the `observers` property with the provided functions.\n *\n * @example\n * ```typescript\n * const observer1 = () => { console.log('Observer 1'); };\n * const observer2 = () => { console.log('Observer 2'); };\n * const subject = new DataMutationObserverSubject(observer1, observer2);\n * ```\n */\nexport const ObservableSubject = function (this: IObservableSubject) {\n    this.observersWeak = []\n    this.observersStrong = []\n    this.channels = new Map()\n\n    this.cleanupRegistry = new FinalizationRegistry((ref) => {\n        // Remove the observer ref from the list when GC'd\n        this.observersWeak = this.observersWeak?.filter?.((item) => item !== ref)\n    })\n} as any as IObservableSubject\n\nObject.assign(ObservableSubject.prototype, {\n    subscribe,\n    unSubscribe,\n    unSubscribeAll,\n    trigger,\n    debounceTrigger\n})\n","import { INotification } from '../notification-manager.types'\n\nexport const getKey = <T>(notification: INotification): string =>\n    `${notification?.event?.target ?? notification?.event?.emitterName}.${notification?.event?.action}`\n","import { INotificationManager } from '../notification-manager-base.types'\nimport { INotification } from '../notification-manager.types'\nimport { getKey } from '../utils/key'\n\n/**\n * Accepts a notifier and adds it to the notifiers map if it doesn't already exist.\n *\n * @param {INotification} notify - The notifier to be added.\n */\nexport function accept(this: INotificationManager, notify: INotification) {\n    const key = getKey(notify)\n\n    const exisingNotifier = this.notifiers.get(key)\n    if (exisingNotifier) {\n        for (const t of notify.event.types) {\n            if (exisingNotifier.event.types.includes(t)) {\n                // console.log('NOTIFIER ALREADY EXISTS', key)\n                continue\n            }\n            // console.log('NEW NOTIFIER REGISTERS different type', key)\n            exisingNotifier.event.types.push(t)\n        }\n    } else {\n        // console.log('NOTIFIER REGISTERS', key)\n\n        this.notifiers.set(key, notify)\n    }\n}\n","import { EventsType, IEvents } from '@core/framework/events/events.types'\nimport { INotificationManager } from '../notification-manager-base.types'\nimport { NotificationPriority, PriorityNotification } from '../notification-manager.types'\n\n/**\n * Batch notify multiple notifications at once\n *\n * @template T\n * @param {Array<{ type: EventsType; data?: T }>} notifications - Array of notifications to batch\n */\nexport function batchNotify<T extends IEvents>(\n    this: INotificationManager,\n    notifications: Array<{ type: EventsType; data?: T }>\n): void {\n    const priorityNotifications: PriorityNotification[] = notifications.map((n) => ({\n        type: n.type,\n        data: n.data,\n        priority: NotificationPriority.NORMAL\n    }))\n\n    if (this.batchConfig.enablePriority) {\n        priorityNotifications.forEach((notification) => {\n            const queue = this.priorityQueues.get(notification.priority) ?? []\n            queue.push(notification)\n            this.priorityQueues.set(notification.priority, queue)\n        })\n    } else {\n        this.batchQueue.push(...priorityNotifications)\n    }\n\n    this.scheduleBatch()\n}\n","import { EventsType, IEvents } from '@core/framework/events/events.types'\nimport { latestCalls } from './global'\n\nexport const getCallByType = function <T extends IEvents>(type: EventsType): T | undefined {\n    return latestCalls.get(type)?.data as T | undefined\n}\n","// Map to store the latest calls for each EventType\n\nimport { EventsType, IEvents } from '@core/framework/events/events.types'\nimport { getCallByType } from '@core/framework/optimization/latest-calls/get-call-by-type'\nimport { removeCallByType } from '@core/framework/optimization/latest-calls/remove-call-by-type'\n\nimport { clearCurrentCall } from '@core/framework/optimization/latest-calls/clear-current-call'\nimport { takeLatest } from '@core/framework/optimization/latest-calls/take-latest'\nimport { INotificationManager } from '../notification-manager-base.types'\nimport { INotification } from '../notification-manager.types'\n\nexport const debounceNotify = function <T extends IEvents>(\n    this: INotificationManager,\n    type: EventsType,\n    delay: number,\n    data?: T,\n    channel?: string\n) {\n    // Create a unique key combining type and channel for per-field debouncing\n    const debounceKey = channel ? `${type}:${channel}` : type\n\n    // Clear the previous timeout for this debounce key, if any\n    clearCurrentCall(debounceKey as EventsType)\n\n    // Store the latest data and set a new timeout for this debounce key\n    const timeoutId: number | NodeJS.Timeout = setTimeout(() => {\n        // Execute the latest call for this EventType\n        this.notifiers.forEach((notifier: INotification) => {\n            if (notifier?.event.types.includes(type)) {\n                const callEvent = getCallByType(debounceKey as EventsType)\n\n                notifier.method(callEvent)\n\n                if (this.autoTracker) {\n                    this.autoTracker?.notify('onAutoTrackNotified', {\n                        ...callEvent,\n                        target: notifier.event.action\n                    } as IEvents)\n                }\n            }\n        })\n\n        // Remove the debounce key from the map after execution\n        removeCallByType(debounceKey as EventsType)\n    }, delay)\n\n    // Update the map with the latest call using the unique debounce key\n    takeLatest<T>(debounceKey as EventsType, timeoutId, data)\n}\n","import { INotificationManager } from '../notification-manager-base.types'\nimport { INotification } from '../notification-manager.types'\nimport { getKey } from '../utils/key'\n\n/**\n * Disposes of the entity by unsubscribing all observers.\n */\nexport function dismiss(this: INotificationManager, notify: INotification) {\n    const key = getKey(notify)\n    // const ref = this.notifiers.get(key)\n    this.notifiers.delete(key)\n}\n","import { INotificationManager } from '../notification-manager-base.types'\n\n/**\n * Disposes of the entity by unsubscribing all observers and cleaning up batching resources.\n */\nexport function dispose(this: INotificationManager) {\n    // Clear any pending batch timeout\n    if (this.batchTimeout !== null) {\n        clearTimeout(this.batchTimeout)\n        this.batchTimeout = null\n    }\n\n    // Clear all batching queues\n    this.batchQueue = []\n    this.priorityQueues.clear()\n    this.isBatchScheduled = false\n\n    // Clear existing observers and notifiers\n    this.observers.unSubscribeAll(false)\n    this.notifiers.clear()\n\n    // Set initialized state to false\n    this.isInitialized = false\n}\n","import { INotificationManager } from '../notification-manager-base.types'\n\n/**\n * Extends the NotificationManager with additional functionality from an extension object.\n * This method allows adding new methods and properties to a NotificationManager instance\n * without modifying the core implementation, following the Open/Closed Principle.\n *\n * @param {string} extensionName - The name of the extension for tracking purposes\n * @param {Record<string, any>} extension - An object containing methods and properties to add to this manager instance\n * @this {INotificationManager}\n *\n * @example\n * ```typescript\n * const webComponentExtension = {\n *   showComponentDebug: function(componentId, event, data, level) {\n *     // Implementation for component debugging\n *   }\n * };\n *\n * notificationManager.extend('webComponents', webComponentExtension);\n * notificationManager.showComponentDebug('my-component', 'property-changed', data, 'debug');\n * ```\n */\nexport const extend = function (\n    this: INotificationManager,\n    extensionName: string,\n    extension: Record<string, any>\n): void {\n    // Initialize extensions map if it doesn't exist\n    this.extensions = this.extensions ?? new Map<string, Record<string, any>>()\n\n    // Track the extension by name\n    this.extensions.set(extensionName, extension)\n\n    // Merge extension methods into this instance\n    Object.assign(this, extension)\n}\n","import { EventsType } from '@core/framework/events/events.types'\nimport { INotificationManager } from '../notification-manager-base.types'\nimport { NotificationPriority, PriorityNotification } from '../notification-manager.types'\n\n/**\n * Immediately flushes all pending notifications\n */\nexport function flushPendingNotifications(this: INotificationManager): void {\n    if (this.batchTimeout !== null) {\n        clearTimeout(this.batchTimeout)\n        this.batchTimeout = null\n    }\n\n    this.isBatchScheduled = false\n\n    if (this.batchConfig.enablePriority) {\n        this.processPriorityBatches()\n    } else {\n        this.processSimpleBatch()\n    }\n}\n\n/**\n * Process priority-based batches\n */\nexport function processPriorityBatches(this: INotificationManager): void {\n    const priorities = [\n        NotificationPriority.CRITICAL,\n        NotificationPriority.HIGH,\n        NotificationPriority.NORMAL,\n        NotificationPriority.LOW\n    ]\n\n    for (const priority of priorities) {\n        const queue = this.priorityQueues.get(priority) ?? []\n        if (queue.length > 0) {\n            this.processNotificationBatch(queue)\n            this.priorityQueues.set(priority, [])\n        }\n    }\n}\n\n/**\n * Process simple batch (no priority)\n */\nexport function processSimpleBatch(this: INotificationManager): void {\n    if (this.batchQueue.length === 0) return\n\n    const currentBatch = [...this.batchQueue]\n    this.batchQueue = []\n\n    this.processNotificationBatch(currentBatch)\n}\n\n/**\n * Process a batch of notifications\n */\nexport function processNotificationBatch(\n    this: INotificationManager,\n    batch: PriorityNotification[]\n): void {\n    if (batch.length === 0) return\n\n    // Group by event type for efficiency\n    const groupedEvents = this.groupEventsByType(batch)\n\n    // Process each group\n    for (const [eventType, events] of groupedEvents) {\n        this.processEventGroup(eventType, events)\n    }\n}\n\n/**\n * Group events by type\n */\nexport function groupEventsByType(this: INotificationManager, batch: PriorityNotification[]) {\n    const grouped = new Map<EventsType, PriorityNotification[]>()\n\n    for (const event of batch) {\n        if (!grouped.has(event.type)) {\n            grouped.set(event.type, [])\n        }\n        grouped.get(event.type)!.push(event)\n    }\n\n    return grouped\n}\n\n/**\n * Process events of the same type\n */\nexport function processEventGroup(\n    this: INotificationManager,\n    eventType: EventsType,\n    events: PriorityNotification[]\n): void {\n    // Notify observers with batched data (using trigger instead of notify)\n    if (this.observers) {\n        // Store batch data for observers to access if needed\n        ;(this.observers as any).lastBatch = { eventType, events }\n        // Trigger field-specific channel using field ID from input\n        const channelId = (this as any).input?.id\n        this.observers.trigger(channelId ? String(channelId) : undefined)\n    }\n\n    // Process notifiers using existing logic but with batch support\n    this.notifiers.forEach((notifier) => {\n        if (notifier?.event.types.includes(eventType)) {\n            // Use new batch handling if available\n            if (notifier.handleBatch) {\n                notifier.handleBatch(events.map((e) => ({ type: e.type, data: e.data })))\n            } else if (notifier.handle) {\n                events.forEach((e) => notifier.handle!(e.type, e.data))\n            } else {\n                // Fallback to existing method-based approach\n                events.forEach((e) => notifier.method(e.data))\n            }\n\n            // Handle auto-tracking\n            if (this.autoTracker && events.length > 0) {\n                events.forEach((e) => {\n                    this.autoTracker?.notify('onAutoTrackNotified', {\n                        ...e.data,\n                        target: notifier.event.action\n                    } as any)\n                })\n            }\n        }\n    })\n\n    // Trigger observers (maintaining existing behavior)\n    this.observers?.trigger()\n}\n\n// Attach additional methods to the main function\nObject.assign(flushPendingNotifications, {\n    processPriorityBatches,\n    processSimpleBatch,\n    processNotificationBatch,\n    groupEventsByType,\n    processEventGroup\n})\n","import { INotificationManager } from '../notification-manager-base.types'\n\nexport const getRegisteredNotifierNames = function (this: INotificationManager) {\n    return [...this.notifiers.keys()]\n}\n","import { INotificationManager } from '../notification-manager-base.types'\n\n/**\n * Checks if a specific extension has been loaded into this NotificationManager instance.\n * This method provides a way to verify extension availability before attempting\n * to use extension-specific features.\n *\n * @param {string} extensionName - The name of the extension to check for\n * @returns {boolean} True if the extension exists, false otherwise\n * @this {INotificationManager}\n *\n * @example\n * ```typescript\n * if (notificationManager.hasExtension('webComponents')) {\n *   notificationManager.showComponentDebug('my-component', 'event', data);\n * }\n * ```\n */\nexport const hasExtension = function (this: INotificationManager, extensionName: string): boolean {\n    return this.extensions?.has(extensionName) ?? false\n}\n","import { INotificationManager } from '../notification-manager-base.types'\nimport { NotificationPriority } from '../notification-manager.types'\n\nexport const initialize = function <T extends HTMLElement>(this: INotificationManager) {\n    // Initialize priority queues if priority batching is enabled\n    if (this.batchConfig.enablePriority) {\n        Object.values(NotificationPriority)\n            .filter((p) => typeof p === 'number')\n            .forEach((priority) => {\n                this.priorityQueues.set(priority as number, [])\n            })\n    }\n\n    this.isInitialized = true\n    // dependencyName is already set in constructor with writable: true\n}\n","import { EventsType, IEvents } from '@core/framework/events/events.types'\nimport { INotificationManager } from '../notification-manager-base.types'\nimport { NotificationPriority, PriorityNotification } from '../notification-manager.types'\n\n/**\n * Notifies all notifiers of a specific type with optional data.\n * Enhanced with batching capabilities.\n *\n * @template T\n * @param {EventsType} type - The type of notification.\n * @param {T} [data] - Optional data to be passed to the notifier's method.\n */\nexport function notify<T extends IEvents>(this: INotificationManager, type: EventsType, data?: T) {\n    const notification: PriorityNotification = {\n        type,\n        data,\n        priority: NotificationPriority.NORMAL\n    }\n\n    // Add to appropriate queue\n    if (this.batchConfig.enablePriority) {\n        const queue = this.priorityQueues.get(notification.priority) || []\n        queue.push(notification)\n        this.priorityQueues.set(notification.priority, queue)\n    } else {\n        this.batchQueue.push(notification)\n    }\n\n    // Schedule or force batch processing\n    const totalQueueSize = this.batchConfig.enablePriority\n        ? Array.from(this.priorityQueues.values()).reduce(\n              (sum: number, queue: any[]) => sum + queue.length,\n              0\n          )\n        : this.batchQueue.length\n\n    if (totalQueueSize >= (this.batchConfig.maxBatchSize ?? 50)) {\n        this.flushPendingNotifications()\n    } else {\n        this.scheduleBatch()\n    }\n}\n","import { INotificationManager } from '../notification-manager-base.types'\n\n/**\n * Schedules batch processing based on configured strategy\n */\nexport function scheduleBatch(this: INotificationManager): void {\n    if (this.isBatchScheduled) return\n\n    this.isBatchScheduled = true\n\n    switch (this.batchConfig.strategy) {\n        case 'microtask':\n            queueMicrotask(() => this.processBatch())\n            break\n        case 'timeout':\n            this.batchTimeout = setTimeout(\n                () => this.processBatch(),\n                this.batchConfig.batchDelay ?? 16\n            ) as any\n            break\n        case 'requestAnimationFrame':\n            requestAnimationFrame(() => this.processBatch())\n            break\n    }\n}\n\n/**\n * Processes the current batch of notifications\n */\nexport function processBatch(this: INotificationManager): void {\n    if (this.batchTimeout !== null) {\n        clearTimeout(this.batchTimeout)\n        this.batchTimeout = null\n    }\n\n    this.isBatchScheduled = false\n\n    if (this.batchConfig.enablePriority) {\n        this.processPriorityBatches()\n    } else {\n        this.processSimpleBatch()\n    }\n}\n\n// Attach processBatch to scheduleBatch for prototype assignment\nObject.assign(scheduleBatch, { processBatch })\n","import { INotificationManager } from '../notification-manager-base.types'\nimport { BatchConfig, NotificationPriority } from '../notification-manager.types'\n\n/**\n * Sets the batch configuration\n *\n * @param {BatchConfig} config - The batch configuration to apply\n */\nexport function setBatchConfig(this: INotificationManager, config: BatchConfig): void {\n    // Handle null config gracefully\n    if (!config) {\n        return\n    }\n\n    this.batchConfig = { ...this.batchConfig, ...config }\n\n    // Initialize priority queues if priority is enabled\n    if (config.enablePriority && !this.priorityQueues.size) {\n        Object.values(NotificationPriority)\n            .filter((p) => typeof p === 'number')\n            .forEach((priority) => {\n                this.priorityQueues.set(priority as number, [])\n            })\n    }\n}\n","import { INotificationManager } from '../notification-manager-base.types'\n\nexport function trigger(this: INotificationManager) {\n    // Trigger field-specific channel using field ID from input\n    const channelId = (this as any).input?.id\n    this.observers.trigger(channelId ? String(channelId) : undefined)\n    //*this.notifiers.notifyAll()\n}\n","import { ObservableSubject } from '@core/observers/observable-subject/observable-subject'\nimport { INotificationManager } from './notification-manager-base.types'\nimport { INotification } from './notification-manager.types'\nimport { accept } from './prototype/accept'\nimport { batchNotify } from './prototype/batch-notify'\nimport { debounceNotify } from './prototype/debounce-notify'\nimport { dismiss } from './prototype/dismiss'\nimport { dispose } from './prototype/dispose'\nimport { extend } from './prototype/extend'\nimport {\n    flushPendingNotifications,\n    groupEventsByType,\n    processEventGroup,\n    processNotificationBatch,\n    processPriorityBatches,\n    processSimpleBatch\n} from './prototype/flush-pending-notifications'\nimport { getRegisteredNotifierNames } from './prototype/get-registered-notifier-names'\nimport { hasExtension } from './prototype/has-extension'\nimport { initialize } from './prototype/initialize'\nimport { notify } from './prototype/notify'\nimport { processBatch, scheduleBatch } from './prototype/schedule-batch'\nimport { setBatchConfig } from './prototype/set-batch-config'\nimport { trigger } from './prototype/trigger'\n\n/**\n * Represents an entity that can be notified by various notifiers and can observe data mutations.\n *\n * @constructor\n * @this {INotificationManager}\n */\nexport const NotificationManager = function (\n    this: INotificationManager,\n    autoTracker?: INotificationManager\n) {\n    this.autoTracker = autoTracker\n    this.notifiers = new Map<string, INotification>()\n    this.observers = new ObservableSubject()\n\n    // Batching properties\n    this.batchQueue = []\n    this.priorityQueues = new Map()\n    this.isBatchScheduled = false\n    this.batchTimeout = null\n    this.batchConfig = {\n        maxBatchSize: 50,\n        batchDelay: 16,\n        enablePriority: true,\n        strategy: 'microtask'\n    }\n\n    Object.defineProperty(this, 'dependencyName', {\n        value: 'NotificationManager',\n        writable: true, // Allow initialization to set proper name\n        configurable: false // Prevent deletion or redefinition\n    })\n    this.isInitialized = false\n} as any as INotificationManager\n\nObject.assign(NotificationManager.prototype, {\n    debounceNotify,\n    getRegisteredNotifierNames,\n    accept,\n    initialize,\n    dismiss,\n    notify,\n    dispose,\n    trigger,\n    batchNotify,\n    flushPendingNotifications,\n    setBatchConfig,\n    scheduleBatch,\n    processBatch,\n    processPriorityBatches,\n    processSimpleBatch,\n    processNotificationBatch,\n    groupEventsByType,\n    processEventGroup,\n    extend,\n    hasExtension\n})\n","import { IStyleManager } from '../style-manager.types'\n/** the reason of using data-class instead of className\n *\n * className attribute is mainly used in jsx or tsx context to act as class (html) at the end of the day.\n *\n * Well, as we have a internal mechanism to manage the class names for the input states\n * and we want to keep the initial component class name we use data-class to do so.\n *\n * this exists for two reasons:\n *   1) for more readability and to avoid confusion between the initial class name and the class name.\n *   2) to avoid the need to parse className get the original input class name if the state changes.\n */\n\nexport const classNames = function (this: IStyleManager) {\n    const ele = this.input?.domManager?.dmGet(this.input.id.toString())\n    if (!ele) {\n        // console.log('-----classNames: NO ELEMENT FOUND', this.input.id)\n        return\n    }\n\n    // console.log('-----classNames', this.input.id, {\n    //     element: ele,\n    //     currentClassName: ele.className,\n    //     dataClass: ele.getAttribute('data-class'),\n    //     classesList: Array.from(this.classesList.entries())\n    // })\n    const userClassName = ele?.attributes.getNamedItem('data-class')?.value\n\n    const flags: string[] = []\n\n    // Add all state flags (only valid keys from InputClassStatesNamesType)\n    const pristineFlag = this.classesList.get('pristine') ?? ''\n    const dirtyFlag = this.classesList.get('dirty') ?? ''\n    const focusFlag = this.classesList.get('focus') ?? ''\n    const validFlag = this.classesList.get('valid') ?? ''\n    const enabledFlag = this.classesList.get('enabled') ?? ''\n    const busyFlag = this.classesList.get('busy') ?? ''\n\n    // console.log('-----classNames FLAGS:', {\n    //     pristine: pristineFlag,\n    //     dirty: dirtyFlag,\n    //     focus: focusFlag,\n    //     valid: validFlag,\n    //     enabled: enabledFlag,\n    //     busy: busyFlag\n    // })\n\n    flags.push(pristineFlag)\n    flags.push(dirtyFlag)\n    flags.push(focusFlag)\n    flags.push(validFlag)\n    flags.push(enabledFlag)\n    flags.push(busyFlag)\n\n    const finalClassName = `${userClassName} ${this.className} ${flags.join(' ')}`.trim()\n    // console.log('-----classNames BEFORE setAttribute:', {\n    //     currentClassName: ele.className,\n    //     finalClassName,\n    //     flags: flags.filter((f) => f)\n    // })\n    ele.setAttribute('class', finalClassName)\n    // console.log('-----classNames AFTER setAttribute:', ele.className)\n    // return `${userClassName} ${this.className} ${this.get()} `\n}\n","import { IStyleManager } from '../style-manager.types'\n\n/**\n * Extends the StyleManager with additional functionality from an extension object.\n * This method allows adding new methods and properties to a StyleManager instance\n * without modifying the core implementation, following the Open/Closed Principle.\n *\n * @param {string} extensionName - The name of the extension for tracking purposes\n * @param {Record<string, any>} extension - An object containing methods and properties to add to this manager instance\n * @this {IStyleManager}\n *\n * @example\n * ```typescript\n * const webComponentExtension = {\n *   addComponentStyles: function(componentId, styles, shadowRoot) {\n *     // Implementation for component-scoped styling\n *   }\n * };\n *\n * styleManager.extend('webComponents', webComponentExtension);\n * styleManager.addComponentStyles('my-component', '.component { color: red; }');\n * ```\n */\nexport const extend = function (\n    this: IStyleManager,\n    extensionName: string,\n    extension: Record<string, any>\n): void {\n    // Initialize extensions map if it doesn't exist\n    this.extensions = this.extensions ?? new Map<string, Record<string, any>>()\n\n    // Track the extension by name\n    this.extensions.set(extensionName, extension)\n\n    // Merge extension methods into this instance\n    Object.assign(this, extension)\n}\n","import { InputClassStatesNamesType } from '@core/framework/common/common.input.state.types'\nimport { IStyleManager } from '../style-manager.types'\n\n/**\n * Retrieves the class name associated with a specific field state.\n *\n * @param {InputStateType} state - The state of the field to retrieve.\n * @returns {string} - The class name associated with the state.\n */\nexport function get(this: IStyleManager, state: InputClassStatesNamesType): string {\n    return this.classesList.get(state) ?? ''\n}\n","import { InputClassStatesNamesType } from '@core/framework/common/common.input.state.types'\nimport { IStyleManager } from '../style-manager.types'\n\n/**\n * Retrieves a list of all flags (field states) as an array.\n *\n * @returns {InputStateType[]} - An array of all field states.\n */\nexport function getFlagsList(this: IStyleManager): InputClassStatesNamesType[] {\n    return Array.from(this.classesList.keys())\n}\n","import { IFieldStateFlags, IStyleManager } from '../style-manager.types'\n\n/**\n * Retrieves all flags (field states) as an object.\n *\n * @returns {IFieldStateFlags} - An object containing all field states as boolean values.\n */\nexport function getFlagsObject(this: IStyleManager): IFieldStateFlags {\n    const flags: any = {}\n    this.classesList.forEach((value, key) => {\n        // Convert string values to boolean: if the value doesn't start with \"no-\", it's true\n        flags[key] = !value.startsWith('no-')\n    })\n    return flags as IFieldStateFlags\n}\n","import { IStyleManager } from '../style-manager.types'\n\n/**\n * Checks if a specific extension has been loaded into this StyleManager instance.\n * This method provides a way to verify extension availability before attempting\n * to use extension-specific features.\n *\n * @param {string} extensionName - The name of the extension to check for\n * @returns {boolean} True if the extension exists, false otherwise\n * @this {IStyleManager}\n *\n * @example\n * ```typescript\n * if (styleManager.hasExtension('webComponents')) {\n *   styleManager.addComponentStyles('my-component', styles);\n * }\n * ```\n */\nexport const hasExtension = function (this: IStyleManager, extensionName: string): boolean {\n    return this.extensions?.has(extensionName) ?? false\n}\n","import { ExceptionManager, newAssert } from '@core/framework/exceptions/exception-manager'\n\nimport {\n    InputClassStatesNamesType,\n    InputClassStatesValuesEnum\n} from '@core/framework/common/common.input.state.types'\nimport { abstractInitializer } from '@core/input-engine/core/abstract/abstract-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { IStyleManager } from '../style-manager.types'\n\nexport const initialize = async function (this: IStyleManager) {\n    try {\n        const success = await abstractInitializer(this.input, (e) => {\n            // Subscribe to field-specific channel using field ID\n            e?.notificationManager?.observers.subscribe(\n                String(e.id),\n                this.classNames.bind(this),\n                false\n            )\n            e?.notificationManager?.observers.subscribe(\n                String(e.id),\n                this.getFlagsObject.bind(this),\n                false\n            )\n\n            e.styleManager.className = ''\n            e.styleManager.classesList = new Map<\n                InputClassStatesNamesType,\n                InputClassStatesValuesEnum\n            >([\n                ['dirty', InputClassStatesValuesEnum.no_dirty],\n                ['errors', InputClassStatesValuesEnum.no_errors],\n                ['focus', InputClassStatesValuesEnum.no_focus],\n                ['open', InputClassStatesValuesEnum.no_open],\n                ['pristine', InputClassStatesValuesEnum.pristine],\n                ['valid', InputClassStatesValuesEnum.valid],\n                ['required', InputClassStatesValuesEnum.required],\n                ['busy', InputClassStatesValuesEnum.no_busy]\n            ])\n\n            e?.styleManager.update(\n                'required',\n                this.input?.validationOptions?.required?.value ?? false\n            )\n\n            // Extend the prototype of FieldStateStyle with FieldInput's prototype\n            // Object.setPrototypeOf(FieldStateStyle.prototype, FieldInput.prototype)\n        })\n\n        if (success) {\n            const em = new ExceptionManager(\n                ...[newAssert(this.input !== undefined, `The dependency field is not instanciated`)]\n            )\n\n            em.process()\n            if (em.hasErrors()) {\n                logManager(undefined, 'critical', 'initialize', em.toString())\n            } else {\n                logManager(this.input.trackingManager, 'info', this.dependencyName, 'Initialized')\n                this.isInitialized = true\n            }\n        }\n    } catch (e: any) {\n        logManager(this.input.trackingManager, 'critical', this.dependencyName, e)\n    }\n}\n","import { InputClassStatesNamesType } from '@core/framework/common/common.input.state.types'\n\nexport const getActiveClass = (className: InputClassStatesNamesType): string => {\n    return `${className}`\n}\n\nexport const getInactiveClass = (className: InputClassStatesNamesType): string => {\n    return `no-${className}`\n}\n\nexport const getClass = (className: InputClassStatesNamesType, isActive: boolean): string => {\n    return isActive ? getActiveClass(className) : getInactiveClass(className)\n}\n","import {\n    InputClassStatesNamesType,\n    InputClassStatesValuesEnum\n} from '@core/framework/common/common.input.state.types'\n\nimport { IStyleManager } from '../style-manager.types'\nimport { getClass } from '../utils/set-class-state'\n\n/**\n * Updates the class list for a specific field state.\n *\n * @param {InputStateType} state - The state of the field to update.\n * @param {string} className - The class name to associate with the state.\n */\nexport function update(\n    this: IStyleManager,\n    className: InputClassStatesNamesType,\n    state: boolean\n): void {\n    // console.log('-----update', this.input.id, className, state)\n    const classValue = getClass(className, state)\n\n    this.classesList.set(className, classValue as InputClassStatesValuesEnum)\n    if (!this.input?.isInitialized || !this.input?.notificationManager?.isInitialized) {\n        console.log('-----update SKIPPED: not initialized', {\n            isInitialized: this.input?.isInitialized,\n            notificationManagerInitialized: this.input?.notificationManager?.isInitialized\n        })\n        return\n    }\n    console.log('-----update triggering notifications for channel:', String(this.input.id))\n    this.input?.notificationManager?.observers?.debounceTrigger(\n        String(this.input.id),\n        this.input?.observablesDelay\n    )\n}\n","import { classNames } from './prototype/class-names'\nimport { extend } from './prototype/extend'\nimport { get } from './prototype/get'\nimport { getFlagsList } from './prototype/get-flags-list'\nimport { getFlagsObject } from './prototype/get-flags-object'\nimport { hasExtension } from './prototype/has-extension'\nimport { initialize } from './prototype/initialize'\nimport { update } from './prototype/update'\nimport { IStyleManager } from './style-manager.types'\n\n/**\n * Represents the style state of a field.\n *\n * @constructor\n * @this {IStyleManager}\n *\n * @property {Map<FieldInputStateType, string>} classesList - A map that holds the class names for different field states.\n */\n\nexport const StyleManager = function (this: IStyleManager) {\n    this.isInitialized = false\n    Object.defineProperty(this, 'dependencyName', {\n        value: 'StyleManager',\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n} as any as IStyleManager\n\nObject.assign(StyleManager.prototype, {\n    initialize,\n    classNames,\n    update,\n    get,\n    getFlagsList,\n    getFlagsObject,\n    extend,\n    hasExtension\n})\n","import { ITrackingManager, ITrackingOutputProvider } from '../tracker-manager.types'\n\n/**\n * Sets up output providers for the tracker.\n * @param providers - Array of output providers.\n */\nexport function addProviders(this: ITrackingManager, providers?: ITrackingOutputProvider[]) {\n    this._outputProviders = providers ? [...this._outputProviders, ...providers] : []\n}\n","import { ITrackingManager } from '../tracker-manager.types'\n\n/**\n * Retrieves the tracking data if tracking is active.\n * @returns Array of tracking data or undefined if inactive.\n */\nexport function getTrackingDate(this: ITrackingManager) {\n    if (!this._trackingIsActive) return\n    return this._trackingData\n}\n","import { defaultOutputTrackingProvider } from '../tracker-manager.default.provider'\nimport { ITrackingManager } from '../tracker-manager.types'\n\nexport const initialize = function <T extends HTMLElement>(this: ITrackingManager) {\n    this.addProviders([defaultOutputTrackingProvider])\n    this.isInitialized = true\n    // this.tracker = tracker\n}\n","import { ITrackingManager, newDtId, newTrackingData } from '../tracker-manager.types'\n\n/**\n * Logs a critical message.\n * @param source - The source of the message.\n * @param message - The critical message to log.\n */\nexport function internalCritical(this: ITrackingManager, source: string, message: string) {\n    if (!this._trackingIsActive) return\n    const dt = newTrackingData(newDtId(this._trackingData), 'critical', source, message)\n    this._trackingData.push(dt)\n    this.print(dt)\n}\n","import { ITrackingManager, newDtId, newTrackingData } from '../tracker-manager.types'\n\n/**\n * Logs an error message.\n * @param source - The source of the message.\n * @param message - The error message to log.\n */\nexport function internalError(this: ITrackingManager, source: string, message: string) {\n    if (!this._trackingIsActive) return\n    const dt = newTrackingData(newDtId(this._trackingData), 'error', source, message)\n    this._trackingData.push(dt)\n    this.print(dt)\n}\n","import { ITrackingManager, newDtId, newTrackingData } from '../tracker-manager.types'\n\n/**\n * Logs an informational message.\n * @param source - The source of the message.\n * @param message - The informational message to log.\n */\nexport function internalInfo(this: ITrackingManager, source: string, message: string) {\n    if (!this._trackingIsActive) return\n    const dt = newTrackingData(newDtId(this._trackingData), 'info', source, message)\n    this._trackingData.push(dt)\n    this.print(dt)\n}\n","import { ITrackingManager, newDtId, newTrackingData } from '../tracker-manager.types'\n\n/**\n * Logs a warning message.\n * @param source - The source of the message.\n * @param message - The warning message to log.\n */\nexport function internalWarning(this: ITrackingManager, source: string, message: string) {\n    if (!this._trackingIsActive) return\n    const dt = newTrackingData(newDtId(this._trackingData), 'warning', source, message)\n    this._trackingData.push(dt)\n    this.print(dt)\n}\n","import { ITrackingData, ITrackingManager, ITrackingOutputProvider } from '../tracker-manager.types'\n\n/**\n * Prints a single tracking data entry using all output providers.\n * @param data - The tracking data to print.\n */\nexport function print(this: ITrackingManager, data: ITrackingData) {\n    if (!this._trackingIsActive) return\n    if (this._outputProviders?.length === 0) {\n        return\n    }\n\n    this._outputProviders.forEach((p: ITrackingOutputProvider) => {\n        // Ensure p is an instance, not a constructor\n        const provider = typeof p === 'function' ? new p() : p\n\n        if (typeof provider?.func !== 'function') {\n            console.warn(\n                `Output provider ${provider?.id || 'unknown'} does not have a valid func method.`\n            )\n        } else {\n            provider.func(data)\n        }\n    })\n}\n","import { ITrackingManager } from '../tracker-manager.types'\n\n/**\n * Prints all tracking data entries using all output providers.\n */\nexport function printAll(this: ITrackingManager) {\n    if (!this._trackingIsActive) return\n    if (this._outputProviders?.length === 0) {\n        return\n    }\n\n    this._outputProviders.forEach((p) => {\n        p.funcAll(this._trackingData)\n    })\n}\n","import { ITrackingManager } from '../tracker-manager.types'\n\n/**\n * Sets the tracking active state.\n * @param active - Boolean indicating whether tracking is active.\n */\nexport function setTrackingActive(this: ITrackingManager, active: boolean) {\n    this._trackingIsActive = active\n}\n","import { addProviders } from './prototype/add-providers'\nimport { getTrackingDate } from './prototype/get-tracking-date'\nimport { initialize } from './prototype/initialize'\nimport { internalCritical } from './prototype/internal-critical'\nimport { internalError } from './prototype/internal-error'\nimport { internalInfo } from './prototype/internal-info'\nimport { internalWarning } from './prototype/internal-warning'\nimport { print } from './prototype/print'\nimport { printAll } from './prototype/print-all'\nimport { setTrackingActive } from './prototype/set-tracking-active'\nimport { ITrackingManager, ITrackingOutputProvider } from './tracker-manager.types'\n\nexport const TrackingManager = function (\n    this: ITrackingManager,\n    providers?: ITrackingOutputProvider[]\n) {\n    if (providers?.length === 0) {\n        console.warn('Tracker was defined using default output provider')\n    }\n\n    this._trackingData = []\n    this._outputProviders = providers ?? []\n    this._trackingIsActive = true\n    Object.defineProperty(this, 'dependencyName', {\n        value: TrackingManager.name,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n} as any as ITrackingManager\n\nObject.assign(TrackingManager.prototype, {\n    setTrackingActive,\n    getTrackingDate,\n    addProviders,\n    initialize,\n    internalCritical,\n    internalError,\n    internalWarning,\n    internalInfo,\n    print,\n    printAll\n})\n","import { IValidationManager, IValidationMethodStrategy } from '../validation-manager.types'\n\n/**\n * Adds one or more validation strategies to the Validator instance.\n * @param {...IValidationManager[]} strategies - An array of strategies to be added.\n */\nexport function addValidationStrategies(\n    this: IValidationManager,\n    ...strategies: IValidationMethodStrategy[]\n) {\n    this.validationStrategies = strategies\n}\n","import { EventsType } from '@core/framework/events/events.types'\nimport { IValidationManager } from '../validation-manager.types'\n\n/**\n * Sets the validation trigger mode for the field input.\n *\n * @param this - The current instance of the field input implementing `IFieldInput`.\n * @param keyWord - An array of `TriggerKeyWordType` values that define the validation trigger modes.\n */\nexport const setTriggerKeyWord = function (this: IValidationManager, keyWord: EventsType[]) {\n    this.triggerKeyWordType = keyWord\n}\n","import { IValidationManager, IValidationMethodStrategy } from '../validation-manager.types'\n\n/**\n * Adds one or more validation strategies to the Validator instance.\n * @param {...IValidationManager[]} strategies - An array of strategies to be added.\n */\nexport function addValidationStrategy(\n    this: IValidationManager,\n    strategy: IValidationMethodStrategy\n) {\n    this.validationStrategies = [...this.validationStrategies, strategy]\n}\n","import { IInputConfiguration } from '@setup/providers/interfaces/i-input-configuration'\nimport { IValidationManager } from '../validation-manager.types'\n\nexport const initialize = function (this: IValidationManager, config?: IInputConfiguration) {\n    if (config?.validationStrategies?.length) {\n        this.addValidationStrategies(...config.validationStrategies)\n    }\n\n    if (config?.triggerKeyWordType?.length) {\n        this.setTriggerKeyWord(config.triggerKeyWordType)\n    }\n\n    this.isInitialized = true\n}\n","import { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IValidationManager, IValidationResult } from '../validation-manager.types'\n\n/**\n * Validates the provided data using the strategies defined in the Validator instance.\n * Uses caching to avoid redundant validation of unchanged fields.\n * @param {IValidationStrategyData} data - The data to be validated.\n * @returns {IValidationResult[]} An array of validation results from the applied strategies.\n */\nexport function validate(\n    this: IValidationManager,\n    field: IExtendedInput,\n    reset?: boolean\n): IValidationResult[] {\n    const output: IValidationResult[] = []\n\n    if (reset === true) {\n        this.validationCache?.invalidate(field.name)\n        return output\n    }\n\n    // Check cache first\n    const cached = this.validationCache?.get(field.name, field.value, this.validationStrategies)\n    if (cached) {\n        return cached\n    }\n\n    // Perform validation\n    for (const strategy of this.validationStrategies) {\n        output.push(strategy.validate(field))\n    }\n\n    // Cache results\n    this.validationCache?.set(field.name, field.value, this.validationStrategies, output)\n\n    return output\n}\n","import { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IValidationManager, IValidationResult } from '../validation-manager.types'\n\n/**\n * Validates the provided data using the strategies defined in the Validator instance.\n * Uses caching to avoid redundant validation of unchanged fields.\n * @param {IValidationStrategyData} data - The data to be validated.\n * @returns {IValidationResult[]} An array of validation results from the applied strategies.\n */\nexport const validateAsync = async function (\n    this: IValidationManager,\n    field: IExtendedInput,\n    reset?: boolean\n): Promise<IValidationResult[]> {\n    const output: IValidationResult[] = []\n\n    if (reset === true) {\n        this.validationCache?.invalidate(field.name)\n        return output\n    }\n\n    // Check cache first\n    const cached = this.validationCache?.get(field.name, field.value, this.validationStrategies)\n    if (cached) {\n        return cached\n    }\n\n    // Perform validation concurrently for better performance where applicable,\n    // though keeping original sequential await for safety if strategies depend on order.\n    // The original code was sequential.\n    for (const strategy of this.validationStrategies) {\n        output.push(await strategy.validateAsync(field))\n    }\n\n    // Cache results\n    this.validationCache?.set(field.name, field.value, this.validationStrategies, output)\n\n    return output\n}\n","import { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IValidationManager, IValidationResult } from '../validation-manager.types'\n\n/**\n * Validates the provided data using the strategies defined in the Validator instance.\n * @param {IValidationStrategyData} data - The data to be validated.\n * @returns {IValidationResult[]} An array of validation results from the applied strategies.\n */\nexport function validateMany(\n    this: IValidationManager,\n    fields: IExtendedInput[],\n    reset?: boolean\n): IValidationResult[] {\n    const output: IValidationResult[] = []\n\n    fields.forEach((field) => {\n        output.push(...this.validate(field, reset))\n    })\n\n    return output\n}\n","import { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IValidationManager, IValidationResult } from '../validation-manager.types'\n\n/**\n * Validates the provided data using the strategies defined in the Validator instance.\n * @param {IValidationStrategyData} data - The data to be validated.\n * @returns {IValidationResult[]} An array of validation results from the applied strategies.\n */\nexport const validateManyAsync = async function (\n    this: IValidationManager,\n    fields: IExtendedInput[],\n    reset?: boolean\n): Promise<IValidationResult[]> {\n    return new Promise((resolve) => {\n        const output: IValidationResult[] = []\n        if (reset === true) {\n            resolve(output)\n        }\n        fields.forEach(async (field) => {\n            const res = (await this?.validateAsync?.(field, reset)) ?? []\n            output.push(...res)\n        })\n        resolve(output)\n    })\n}\n","/**\n * FORMULAR - ValidationManager Core\n * Copyright (c) 2025 Piana Tadeo\n * Licensed under MIT License\n *\n * Comprehensive validation engine with country-specific support\n */\n\nimport { addValidationStrategies } from './prototype/add-validation-strategies'\nimport { setTriggerKeyWord } from './prototype/set-trigger-keyword'\n\nimport { addValidationStrategy } from './prototype/add-validation-strategy'\nimport { initialize } from './prototype/initialize'\nimport { validate } from './prototype/validate'\nimport { validateAsync } from './prototype/validateAsync'\nimport { validateMany } from './prototype/validateMany'\nimport { validateManyAsync } from './prototype/validateManyAsync'\nimport { IValidationManager } from './validation-manager.types'\n\n/**\n * Validator class that implements the IValidator interface.\n *\n * @class\n * @implements {IValidator}\n *\n * @method addStrategies\n * @param {...IValidatorStrategy[]} strategies - An array of strategies to be added.\n *\n * @method validate\n * @param {IValidatorStrategyData} data - The data to be validated.\n * @returns {IValidationResult[]} An array of validation results from the applied strategies.\n */\nexport const ValidationManager = function (this: IValidationManager) {\n    this.isInitialized = false\n    this.isValidating = false\n    this.validationStrategies = []\n    this.triggerKeyWordType = []\n    Object.defineProperty(this, 'dependencyName', {\n        value: 'ValidationManager',\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n} as any as IValidationManager\n\nObject.assign(ValidationManager.prototype, {\n    initialize,\n    addValidationStrategies,\n    addValidationStrategy,\n    setTriggerKeyWord,\n    validate,\n    validateAsync,\n    validateMany,\n    validateManyAsync\n})\n","import { IParserStrategy, IValueManager } from '../value-manager.types'\n\nexport const acceptValueStrategies = function (\n    this: IValueManager,\n    ...parsers: IParserStrategy<any>[]\n) {\n    this.valueStrategies = [...parsers]\n}\n","import { InputDataTypes } from '@core/framework/common/common.input.data.types'\nimport { IParserStrategy, IValueManager } from '../value-manager.types'\n\n/**\n * Adds one or more parser strategies to the ValueStrategy instance.\n * Ensures no duplicate strategies are added.\n * @param parsers - Array of parser strategies to add.\n */\nexport function addValueStrategies(this: IValueManager, ...parsers: IParserStrategy<any>[]) {\n    for (const parser of parsers) {\n        if (this.valueStrategies.find((o: IParserStrategy<InputDataTypes>) => o.id === parser.id))\n            continue\n        this.valueStrategies.push(parser)\n    }\n}\n","import { IExtendedInput, IInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IValidationResult } from '@core/managers/validation-manager/validation-manager.types'\nimport { IValueManager } from '../value-manager.types'\n\nexport const clear = function (this: IValueManager, field: IExtendedInput | IInput) {\n    try {\n        const discriminatedInput = field.dependencyName === 'InputBase' ? field : field.input\n\n        discriminatedInput.value = null\n        discriminatedInput.originalValue = null\n        discriminatedInput.objectValue = null\n\n        discriminatedInput.isPristine =\n            discriminatedInput.originalValue === discriminatedInput.value\n        discriminatedInput.isDirty = discriminatedInput.originalValue !== discriminatedInput.value\n\n        discriminatedInput.styleManager?.update('pristine', discriminatedInput.isPristine)\n        discriminatedInput.styleManager?.update('dirty', discriminatedInput.isDirty)\n\n        // Always trigger validation after clearing to ensure isValid and style states are updated\n        // This ensures validation runs regardless of whether 'onClear' is in the validation trigger modes\n        if (discriminatedInput.validationManager && discriminatedInput.shouldValidate) {\n            const validationResults = discriminatedInput.validationManager.validate(\n                field as IExtendedInput\n            )\n            discriminatedInput.isValid = validationResults.every(\n                (result: IValidationResult) => result.state\n            )\n            discriminatedInput.validationResults = validationResults\n\n            // Update validation-related styles\n            discriminatedInput.styleManager?.update('valid', discriminatedInput.isValid)\n            discriminatedInput.styleManager?.update('errors', !discriminatedInput.isValid)\n        }\n    } catch (e) {\n        console.error(\n            `CLEARING TYPE ${field?.input?.type ?? 'no type found'} in field: ${field?.input?.name ?? field?.name} `,\n            e\n        )\n    }\n}\n","import { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IValueManager } from '../value-manager.types'\n\n/**\n * Converts the current field input value to a string representation.\n *\n * @this IFieldInput - The context object that this function is bound to.\n * @returns {string | null} The value of the field input as a string, or `null` if the value is not a string.\n */\nexport const getAsString = function (this: IValueManager, field: IExtendedInput): string | null {\n    const strategy = this.valueStrategies.find((s) => s.concernedTypes.includes(field.input.type))\n\n    if (!strategy) {\n        console.error(`NO PARSER STRATEGY FOUND FOR THIS TYPE ${field.input.type} `)\n        return null\n    }\n    const valueOut = this.getValue(field)\n    try {\n        switch (field.input.type) {\n            case 'number':\n                return String(valueOut as string) as string | null\n            case 'checkbox':\n                return valueOut === true ? '1' : valueOut === false ? '0' : 'null'\n            case 'date':\n            case 'time':\n                return JSON.stringify(valueOut) as string | null\n            case 'select':\n            case 'radio':\n            default:\n                return valueOut as string | null\n        }\n    } catch (e) {\n        console.error(\n            `PARSING ERROR FOR TYPE ${field.input.type} in field: ${field.input.name} `,\n            e\n        )\n        return null\n    }\n}\n","import { IOptionItem } from '@core/framework/schema/option-schema/options.scheme.types'\nimport { DateObject } from '@core/framework/types/date/date-object.object'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IValueManager, OutputPurposeType } from '../value-manager.types'\n\n/**\n * Retrieves the value of a field based on the strategies defined in the ValueStrategy instance.\n * @param field - The field input base instance to retrieve the value from.\n * @returns The value of the field or null if no strategy matches.\n */\nexport function getValue(\n    this: IValueManager,\n    field: IExtendedInput,\n    purpose?: OutputPurposeType\n): unknown | null {\n    const purposeType = purpose ?? 'all'\n\n    const strategy = this.valueStrategies.find((s) => s.concernedTypes.includes(field.input.type))\n    // console.log('getValue', field.input.type, strategy)\n    if (!strategy) {\n        console.error(`NO PARSER STRATEGY FOUND FOR THIS TYPE ${field.input.type} `)\n        return\n    }\n    try {\n        const value = strategy.getter(field)\n\n        switch (field.input.type) {\n            case 'select':\n                return (value as unknown as IOptionItem)?.value\n\n            case 'date':\n                if (purposeType === 'validation') {\n                    const dte = new DateObject()\n                    if (!dte || value === null || value === undefined) {\n                        return null\n                    }\n                    dte?.setFromString?.(value as string, field.input.culture.dateFormat)\n                    return dte?.toDate?.().getTime()\n                }\n                return value\n            // return (value as unknown as IOptionItem)?.sequenceId\n            case 'radio':\n            default:\n                return value\n        }\n    } catch (e) {\n        console.error(\n            `PARSING ERROR FOR TYPE ${field.input.type} in field: ${field.input.name} `,\n            e\n        )\n    }\n}\n","import { logManager } from '@core/managers/log-manager/log-manager'\nimport { IInputConfiguration } from '@setup/providers/interfaces/i-input-configuration'\nimport { IValueManager } from '../value-manager.types'\n\n/**\n * The setup function sets up the field input by subscribing to observers.\n * basic configuration for styles and validation\n */\nexport const initialize = async function (this: IValueManager, config?: IInputConfiguration) {\n    try {\n        // Accept value strategies from config if provided\n        if (config?.valueStrategies && config.valueStrategies.length > 0) {\n            this.acceptValueStrategies(...config.valueStrategies)\n        }\n\n        this.isInitialized = true\n    } catch (e: any) {\n        logManager(undefined, 'critical', this.dependencyName, e?.message ?? e.toString())\n    }\n}\n","import { InputDataTypes } from '@core/framework/common/common.input.data.types'\n\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IValueManager } from '../value-manager.types'\n\nexport const setValue = function (\n    this: IValueManager,\n    field: IExtendedInput,\n    value: InputDataTypes | null\n) {\n    const strategy = this.valueStrategies.find((s) => s.concernedTypes.includes(field.input.type))\n\n    if (!strategy) {\n        console.error(`NO PARSER STRATEGY FOUND FOR THIS TYPE ${field.input.type} `)\n        return\n    }\n    try {\n        strategy.setter(field, value)\n\n        field.input.isPristine = field.input.originalValue === field.input.value\n        field.input.isDirty = field.input.originalValue !== field.input.value\n\n        field.input.styleManager?.update('pristine', field.input.isPristine)\n        field.input.styleManager?.update('dirty', field.input.isDirty)\n    } catch (e) {\n        console.error(\n            `PARSING ERROR FOR TYPE ${field.input.type} in field: ${field.input.name} `,\n            e\n        )\n    }\n}\n","import { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IValueManager } from '../value-manager.types'\n\nexport const setValueFromHtmlElement = function (\n    this: IValueManager,\n    field: IExtendedInput,\n    value: HTMLInputElement | null\n) {\n    try {\n        switch (field.input.type) {\n            case 'checkbox':\n                this.setValue(field, value?.checked ?? false)\n                break\n            default:\n                return this.setValue(field, value?.value ?? null)\n        }\n    } catch (e) {\n        console.error(\n            `setValueFromHtmlElement ERROR IN PARSING ${field.input.type} in field: ${field.input.name} `,\n            e\n        )\n    }\n}\n","import { acceptValueStrategies } from './prototype/accept-value-strategies'\nimport { addValueStrategies } from './prototype/add-value-strategies'\nimport { clear } from './prototype/clear'\nimport { getAsString } from './prototype/get-as-string'\nimport { getValue } from './prototype/get-value'\nimport { initialize } from './prototype/initialize'\nimport { setValue } from './prototype/set-value'\nimport { setValueFromHtmlElement } from './prototype/set-value-from-html-element'\nimport { IValueManager } from './value-manager.types'\n\nexport const ValueManager = function (this: IValueManager) {\n    this.isInitialized = false\n    this.valueStrategies = [] // Initialize empty strategies array\n\n    Object.defineProperty(this, 'dependencyName', {\n        value: ValueManager.name,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n} as any as IValueManager\n\nObject.assign(ValueManager.prototype, {\n    initialize,\n    acceptValueStrategies,\n    setValueFromHtmlElement,\n    addValueStrategies,\n    getValue,\n    setValue,\n    getAsString,\n    clear\n})\n","import {\n    ITrackingStrategyService,\n    IValidationStrategyService,\n    IValidationTriggerService,\n    IValueStrategyService\n} from '../../../services'\nimport { IInputConfiguration } from '../../interfaces/i-input-configuration'\n\nexport const SInputConfigProvider = Symbol.for('IInputConfigProvider')\n\nexport interface IInputConfigProvider {\n    new (\n        validationTriggerService: IValidationTriggerService,\n        validationService: IValidationStrategyService,\n        valueStrategyService: IValueStrategyService,\n        trackingStrategyService: ITrackingStrategyService\n    ): IInputConfigProvider\n\n    getConfig: () => IInputConfiguration\n}\n\nexport const InputConfigProvider = function (\n    this: IInputConfigProvider,\n    validationTriggerService: IValidationTriggerService,\n    validationService: IValidationStrategyService,\n    valueStrategyService: IValueStrategyService,\n    trackingStrategyService: ITrackingStrategyService\n): IInputConfigProvider {\n    this.getConfig = () => {\n        if (\n            !validationTriggerService ||\n            !validationService ||\n            !valueStrategyService ||\n            !trackingStrategyService\n        ) {\n            throw new Error(\n                'One or more services are not provided. Please ensure all required services are available.'\n            )\n        }\n\n        const output: IInputConfiguration = {\n            validationStrategies: validationService?.strategies,\n            trackingStrategies: trackingStrategyService?.strategies,\n            valueStrategies: valueStrategyService?.strategies,\n            triggerKeyWordType: validationTriggerService?.triggers\n        }\n\n        return output\n    }\n\n    return this\n} as any as IInputConfigProvider\n","import { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\nimport { IServiceManager } from '@core/managers/service-manager/service-manager.types'\n\nexport const SFieldDescriptorService = Symbol.for('IFieldDescriptorService')\n\nexport interface IFieldDescriptorService {\n    new (sm: IServiceManager): IFieldDescriptorService\n    descriptors: IFieldDescriptor[]\n    // Define the methods and properties for the base input service\n    // For example:\n    getDescriptorByName: (name: string) => IFieldDescriptor | undefined\n    getDescriptorById: (id: number) => IFieldDescriptor | undefined\n    setFieldDescriptor: (descriptor: IFieldDescriptor) => void\n    reset: () => void\n}\n\nexport const FieldDescriptorService = function (\n    this: IFieldDescriptorService,\n    sm: IServiceManager\n) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n    this.descriptors = []\n} as any as IFieldDescriptorService\n\nObject.assign(FieldDescriptorService.prototype, {\n    getDescriptorByName: function (\n        this: IFieldDescriptorService,\n        name: string\n    ): IFieldDescriptor | undefined {\n        // Implementation to get descriptor by field name\n        return this.descriptors.find((descriptor) => descriptor.name === name)\n    },\n    getDescriptorById: function (\n        this: IFieldDescriptorService,\n        id: number\n    ): IFieldDescriptor | undefined {\n        // Implementation to get descriptor by ID\n        return this.descriptors.find((descriptor) => descriptor.id === id)\n    },\n    setFieldDescriptor: function (\n        this: IFieldDescriptorService,\n        descriptor: IFieldDescriptor\n    ): void {\n        // Implementation to set a field descriptor\n        const existingIndex = this.descriptors.findIndex((d) => d.id === descriptor.id)\n        if (existingIndex !== -1) {\n            this.descriptors[existingIndex] = descriptor // Update existing descriptor\n        } else {\n            this.descriptors.push(descriptor) // Add new descriptor\n        }\n    },\n    reset: function (this: IFieldDescriptorService): void {\n        // Implementation to reset the descriptors\n        this.descriptors = [] // Clear the descriptors array\n    }\n})\n","import { ConfigurationManager } from '@core/managers/configuration-manager'\nimport {\n    IConfigurationManager,\n    SConfigurationManager\n} from '@core/managers/configuration-manager/interfaces/i-configuration-manager'\n\nimport { DomManager } from '../../core/managers/dom-manager/dom-manager'\nimport { SDomManager } from '../../core/managers/dom-manager/dom-manager.types'\nimport { NotificationManager } from '../../core/managers/notification-manager/notification-manager'\nimport {\n    SAutoTrackerNotificationManager,\n    SNotificationManager\n} from '../../core/managers/notification-manager/notification-manager.types'\nimport {\n    IServiceManager,\n    SServiceManager\n} from '../../core/managers/service-manager/service-manager.types'\nimport { StyleManager } from '../../core/managers/style-manager/style-manager'\nimport { SStyleManager } from '../../core/managers/style-manager/style-manager.types'\nimport { TrackingManager } from '../../core/managers/tracking-manager/tracker-manager'\nimport { STrackingManager } from '../../core/managers/tracking-manager/tracker-manager.types'\nimport { ValidationManager } from '../../core/managers/validation-manager/validation-manager'\nimport { SValidationManager } from '../../core/managers/validation-manager/validation-manager.types'\nimport { ValueManager } from '../../core/managers/value-manager/value-manager'\nimport { SValueManager } from '../../core/managers/value-manager/value-manager.types'\nimport {\n    InputConfigProvider,\n    SInputConfigProvider\n} from '../providers/configuration/input-configuration/input-config-provider'\nimport {\n    FieldDescriptorService,\n    SFieldDescriptorService\n} from '../services/field-descriptor-service'\nimport {\n    STrackingStrategyService,\n    TrackingStrategyService\n} from '../services/tracking-strategy-service'\nimport {\n    SValidationStrategyService,\n    ValidationStrategyService\n} from '../services/validation-strategy-service'\nimport {\n    SValidationTriggerService,\n    ValidationTriggerService\n} from '../services/validation-trigger-service'\nimport { SValueStrategyService, ValueStrategyService } from '../services/value-strategy-service'\nimport { setupBaseInputClasses } from './setup-base-input-classes'\nimport { setupBaseFieldsConfiguration } from './setup-base-input-configurations'\n\n// TODO: Re-enable after updating setup-validation-patterns to use new configuration manager\n// import { setupValidationPatterns } from './setup-validation-patterns'\n\nexport const setupManagers = function (sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    } // Setup validation patterns first (this includes configuration services)\n    // TODO: Re-enable after updating setup-validation-patterns to use new configuration manager\n    // setupValidationPatterns(sm)\n\n    // ========================================\n    // PHASE 1: CORE INFRASTRUCTURE SERVICES\n    // ========================================\n\n    // First register the ServiceManager instance under its interface identifier\n    sm.register(SServiceManager, () => sm, { lifetime: 'singleton' })\n\n    // Configuration Manager - Foundation for all other services\n    sm.registerClass(SConfigurationManager, ConfigurationManager, {\n        lifetime: 'singleton',\n        dependencies: [SServiceManager]\n    })\n\n    // Initialize the configuration manager with the default configuration\n    const configManager = sm.resolve<IConfigurationManager>(SConfigurationManager)\n    const defaultConfig = configManager.getDefaultConfiguration()\n    configManager.setConfiguration('default', defaultConfig)\n    configManager.useConfiguration('default')\n\n    // ========================================\n    // PHASE 2: CORE MANAGERS (Dependencies: Configuration)\n    // ========================================\n\n    // Core Managers - depend on configuration\n    sm.registerClass(SDomManager, DomManager, {\n        lifetime: 'singleton',\n        dependencies: [SServiceManager]\n    })\n\n    sm.register(SStyleManager, () => new StyleManager(), {\n        lifetime: 'transient' // Each field needs its own StyleManager (holds className, classesList state)\n    })\n\n    sm.register(SValidationManager, () => new ValidationManager(), {\n        lifetime: 'transient' // Each field needs its own ValidationManager (holds validation state)\n    })\n\n    sm.register(SValueManager, () => new ValueManager(), {\n        lifetime: 'transient' // Each field needs its own ValueManager (holds field value state)\n    })\n\n    sm.register(STrackingManager, () => new TrackingManager(), {\n        lifetime: 'transient' // Each field needs its own TrackingManager (holds tracking state)\n    })\n\n    // Notification Managers - Auto-tracker first, then dependent manager\n    sm.register(SAutoTrackerNotificationManager, () => new NotificationManager(), {\n        lifetime: 'singleton' // Single instance with channel-based routing per field\n    })\n\n    sm.registerClass(SNotificationManager, NotificationManager, {\n        lifetime: 'singleton', // Single instance with channel-based routing per field\n        dependencies: [SAutoTrackerNotificationManager]\n    })\n\n    // ========================================\n    // PHASE 3: STRATEGY SERVICES (Dependencies: Core Managers + Configuration)\n    // ========================================\n\n    // Field Descriptor Service - depends on service manager\n    sm.registerClass(SFieldDescriptorService, FieldDescriptorService, {\n        lifetime: 'singleton',\n        dependencies: [SServiceManager]\n    })\n\n    // Strategy Services - depend on service manager and their respective managers\n    sm.registerClass(SValidationTriggerService, ValidationTriggerService, {\n        lifetime: 'singleton',\n        dependencies: [SServiceManager]\n    })\n\n    sm.registerClass(SValidationStrategyService, ValidationStrategyService, {\n        lifetime: 'singleton',\n        dependencies: [SServiceManager]\n    })\n\n    sm.registerClass(SValueStrategyService, ValueStrategyService, {\n        lifetime: 'singleton',\n        dependencies: [SServiceManager]\n    })\n\n    sm.registerClass(STrackingStrategyService, TrackingStrategyService, {\n        lifetime: 'singleton',\n        dependencies: [SServiceManager]\n    })\n\n    // ========================================\n    // PHASE 4: INPUT CONFIGURATION PROVIDER (Dependencies: All Strategy Services)\n    // ========================================\n\n    // Input Configuration Provider - depends on all strategy services\n    sm.registerClass(SInputConfigProvider, InputConfigProvider, {\n        lifetime: 'singleton',\n        dependencies: [\n            SValidationTriggerService,\n            SValidationStrategyService,\n            SValueStrategyService,\n            STrackingStrategyService\n        ]\n    })\n\n    // ========================================\n    // PHASE 5: INPUT ENGINE SETUP (Dependencies: All Core Managers)\n    // ========================================\n\n    // Setup input base classes - this registers all the input engine components\n    // Note: This should be called by ServiceManagerFactory when includeInputEngine is true\n    // But we include it here to ensure input base classes are available for\n    // any service manager that calls setupManagers directly\n    try {\n        setupBaseInputClasses(sm)\n    } catch (error) {\n        // Gracefully handle if input base classes setup fails\n        // This allows setupManagers to work even if input engine is not available\n        console.warn('Failed to setup base input classes:', error)\n    }\n\n    // ========================================\n    // PHASE 6: BASE FIELD CONFIGURATIONS (Dependencies: Strategy Services)\n    // ========================================\n\n    // Setup base field configurations - this configures the strategy services\n    // with default validation strategies, value parsers, tracking providers, and triggers\n    try {\n        setupBaseFieldsConfiguration(sm)\n    } catch (error) {\n        // Gracefully handle if base field configurations setup fails\n        console.warn('Failed to setup base field configurations:', error)\n    }\n}\n","import { logManager } from '@core/managers/log-manager/log-manager'\n\nimport { IInputConfiguration } from '@setup/providers/interfaces/i-input-configuration'\nimport { IInitializationManager } from '../initialization-manager.types'\n\nexport interface IInitializationDelegate {\n    new (\n        name: string,\n        manager: IInitializationManager,\n        intitializer: (params: IInputConfiguration) => void | Promise<void>\n    ): IInitializationDelegate\n    name: string\n    manager: IInitializationManager\n    next?: IInitializationDelegate\n    intitializer: (params: IInputConfiguration) => void | Promise<void>\n    execute?: () => Promise<void>\n    setNextSequence?: (sequenceInitliaizer: IInitializationDelegate) => void\n}\n\nexport const execute = async function (this: IInitializationDelegate) {\n    try {\n        logManager(undefined, 'info', InitializationDelegate.name, `${this.name} executing...`)\n        await this?.intitializer?.(this.manager.params)\n\n        await this.next?.execute?.()\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'info',\n            this.name,\n            `execution of initialization ${this.name} failed: ${e.message}`\n        )\n    }\n}\n\nexport const setNext = function (\n    this: IInitializationDelegate,\n    initializerDelegate: IInitializationDelegate\n) {\n    if (!this.next) {\n        this.next = initializerDelegate\n    } else {\n        this.next?.setNextSequence?.(initializerDelegate)\n    }\n}\n\nexport const InitializationDelegate = function (\n    this: IInitializationDelegate,\n    name: string,\n    manager: IInitializationManager,\n    intitializer: (params: IInputConfiguration) => void | Promise<void>\n) {\n    this.name = name\n    this.manager = manager\n    this.next = undefined\n    this.intitializer = intitializer\n    this.execute = execute\n    this.setNextSequence = setNext\n} as any as IInitializationDelegate\n","/**\n * Adds an initializer delegate to the InitializationManager sequence.\n * @param name - The name of the initializer.\n * @param initializer - The initializer function.\n */\nimport { IInputConfiguration } from '@setup/providers/interfaces/i-input-configuration'\nimport { InitializationDelegate } from '../delegates/initialization-delegate'\nimport type { IInitializationManager } from '../initialization-manager.types'\n\nexport const addInitializer = function (\n    this: IInitializationManager,\n    name: string,\n    initializer: (params: IInputConfiguration) => void | Promise<void>\n) {\n    const newDelegate = new InitializationDelegate(name, this, initializer)\n\n    if (!this.initializer) {\n        this.initializer = newDelegate\n    } else {\n        this.initializer?.setNextSequence?.(newDelegate)\n    }\n}\n","/**\n * Executes the sequence of initializers in the InitializationManager.\n */\nimport type { IInitializationManager } from '../initialization-manager.types'\n\nexport const executeSequences = async function (this: IInitializationManager) {\n    await this.initializer?.execute?.()\n}\n","import { IInputConfiguration } from '@setup/providers/interfaces/i-input-configuration'\nimport type { IInitializationManager } from './initialization-manager.types'\n// import type { IInitializationDelegate } from './delegates/initialization-delegate'\n// Import all prototype functions\nimport { addInitializer } from './prototype/add-initializer'\nimport { executeSequences } from './prototype/execute-sequences'\n\n/**\n * InitializationManager constructor function.\n * @param params - The configuration parameters.\n */\nexport const InitializationManager = function (\n    this: IInitializationManager,\n    params: IInputConfiguration\n) {\n    this.params = params\n    this.initializer = undefined\n} as any as IInitializationManager\n\n// Attach prototype functions\nObject.assign(InitializationManager.prototype, {\n    addInitializer,\n    executeSequences\n})\n","import { IInputConfiguration } from '@setup/providers/interfaces/i-input-configuration'\nimport { InitializationManager } from './initialization-manager'\nimport { IInitializableDependency } from './initialization-manager.types'\n\n// Helper function to initialize dependencies\nexport async function sequenceInitializer(\n    config: IInputConfiguration,\n    dependencies: IInitializableDependency[]\n): Promise<void> {\n    const IM = new InitializationManager(config)\n\n    dependencies.forEach((dep) => {\n        if (!dep) return\n        IM.addInitializer(dep?.dependencyName, dep?.initialize.bind(dep))\n    })\n\n    await IM.executeSequences()\n}\n","/**  */\n\nimport { IInputBase } from '@core/input-engine/core/input-base/input-base.types'\nimport { IInitializableDependency } from '@core/managers/initialization-manager/initialization-manager.types'\n\n/**\n * these dependencies reprensents all the composite classes that the base field needs\n * - fieldBaseInput: represents the base field input\n * Note: do not pass the fieldBaseInput twice.\n *\n * The dependencies that are passed by default and which are part of the FieldBaseInput\n * are:\n * - dom: represents the dom dependency\n * - tracker: represents the tracker dependency\n * - drawer: represents the drawer dependency\n * - styler: represents the styler dependency\n * - notifier: represents the notifier dependency\n * - validationStrategy: represents the validation strategy dependency\n * - valueStrategy: represents the value strategy dependency\n *\n * rest: represents the rest of the dependencies that should be initialized\n * afterwards.\n *\n * Note: the order of the dependencies matters. The dependencies that are passed\n * in the rest parameter will be initialized after the base dependencies.\n */\nexport const baseDependencyList = (\n    fieldBaseInput: IInputBase,\n    ...rest: IInitializableDependency[]\n): IInitializableDependency[] => [\n    /** these are the basic dependencies that all base field inputs needs in\n     * order to work properly\n     */\n    fieldBaseInput.domManager,\n    fieldBaseInput.trackingManager,\n    fieldBaseInput.drawer,\n    fieldBaseInput.styleManager,\n    fieldBaseInput.notificationManager,\n    fieldBaseInput.validationManager,\n    fieldBaseInput.valueManager,\n    fieldBaseInput,\n    ...rest\n]\n","import { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\nimport { IInputBase, SInputBase } from '@core/input-engine/core/input-base/input-base.types'\nimport { IDomManager, SDomManager } from '@core/managers/dom-manager/dom-manager.types'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { INotificationManager } from '@core/managers/notification-manager/notification-manager-base.types'\nimport { SNotificationManager } from '@core/managers/notification-manager/notification-manager.types'\nimport { IServiceManager } from '@core/managers/service-manager/service-manager.types'\nimport {\n    ITrackingManager,\n    STrackingManager\n} from '@core/managers/tracking-manager/tracker-manager.types'\n\nexport const SBaseInputService = Symbol.for('IBaseInputService')\n\nexport interface IBaseInputService {\n    new (sm: IServiceManager): IBaseInputService\n    sm: IServiceManager\n    // Base input service is synchronous - no initialization needed\n    build: (descriptor: IFieldDescriptor) => IInputBase\n}\n\nexport const BaseInputService = function (this: IBaseInputService, sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n    this.sm = sm\n    try {\n        this.build = function (descriptor: IFieldDescriptor): IInputBase {\n            const baseInputInstance = this.sm.lazy<IInputBase>(SInputBase)?.()\n            const domManager = this.sm.lazy<IDomManager<HTMLInputElement>>(SDomManager)?.()\n            const notificationManager = this.sm.lazy<INotificationManager>(SNotificationManager)?.()\n            const trackingManaget = this.sm.lazy<ITrackingManager>(STrackingManager)?.()\n\n            // 🎯 OPTIMIZATION: Pass null for lazy managers (validation, value, style)\n            // These will be created on-demand via lazy getters, reducing initialization time by ~70%\n            baseInputInstance.initializeProperties(descriptor)\n            baseInputInstance.useDomManager(domManager)\n            baseInputInstance.useTrackingManager(trackingManaget)\n            baseInputInstance.useNotificationManager(notificationManager)\n            baseInputInstance.useValidationManager(null) // Lazy\n            baseInputInstance.useValueManager(null) // Lazy\n            baseInputInstance.useStyleManager(null) // Lazy\n            return baseInputInstance\n        }\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            BaseInputService.name,\n            `an error has occured when initializing ${BaseInputService.name} class: ${e.message}`\n        )\n        return undefined\n    }\n    // Register the base input service with the service manager\n} as any as IBaseInputService\n","import { IBuilderService } from '@core/factories/input-factory/input-factory'\nimport { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\nimport {\n    ICheckBoxBaseInput,\n    SCheckBoxBaseInput\n} from '@core/input-engine/variants/check-box-base/check-box-base-input.types'\nimport {\n    IClickBaseInput,\n    SClickBaseInput\n} from '@core/input-engine/variants/click-base/click-base-input.types'\nimport { sequenceInitializer } from '@core/managers/initialization-manager/sequence-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { IServiceManager } from '@core/managers/service-manager/service-manager.types'\n\nimport { baseDependencyList } from '@setup/providers/configuration/base-dependency/dependency.list.settings'\nimport {\n    IInputConfigProvider,\n    SInputConfigProvider\n} from '@setup/providers/configuration/input-configuration/input-config-provider'\nimport { IBaseInputService, SBaseInputService } from './base-input-service'\n\nexport const SCheckInputService = Symbol.for('ICheckInputService')\n\nexport interface ICheckInputService extends IBuilderService<ICheckBoxBaseInput> {\n    new (sm: IServiceManager): ICheckInputService\n    // Define the methods and properties for the base input service\n    // For example:\n    build: (descriptor: IFieldDescriptor) => Promise<ICheckBoxBaseInput>\n}\n\nexport const CheckInputService = function (this: ICheckInputService, sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n    this.sm = sm\n    try {\n        this.build = async function (descriptor: IFieldDescriptor): Promise<ICheckBoxBaseInput> {\n            const configProvider = this.sm.lazy<IInputConfigProvider>(SInputConfigProvider)?.()\n            const config = configProvider.getConfig()\n\n            const baseInputService = this.sm.lazy<IBaseInputService>(SBaseInputService)?.()\n            const _baseInput = baseInputService.build(descriptor)\n            const _clickInput = this.sm.lazy<IClickBaseInput>(SClickBaseInput)?.()\n            const _checkInput = this.sm.lazy<ICheckBoxBaseInput>(SCheckBoxBaseInput)?.()\n\n            _clickInput.input = _baseInput\n            _checkInput.input = _baseInput\n            _checkInput.clickBase = _clickInput\n\n            const dependencies = baseDependencyList(_baseInput, _clickInput, _checkInput)\n\n            await sequenceInitializer(config, dependencies)\n            return _checkInput\n        }\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            CheckInputService.name,\n            `an error has occured when initializing ${CheckInputService.name} class: ${e.message}`\n        )\n        return undefined\n    }\n    // Register the base input service with the service manager\n} as any as ICheckInputService\n","import { IBuilderService } from '@core/factories/input-factory/input-factory'\nimport { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\nimport {\n    IClickBaseInput,\n    SClickBaseInput\n} from '@core/input-engine/variants/click-base/click-base-input.types'\nimport {\n    IOptionBaseInput,\n    SOptionBaseInput\n} from '@core/input-engine/variants/option-based/option-base-input.types'\nimport {\n    IRadioBaseInput,\n    SRadioBaseInput\n} from '@core/input-engine/variants/radio-base/radio-base-input.types'\nimport { sequenceInitializer } from '@core/managers/initialization-manager/sequence-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { IServiceManager } from '@core/managers/service-manager/service-manager.types'\n\nimport { baseDependencyList } from '@setup/providers/configuration/base-dependency/dependency.list.settings'\nimport {\n    IInputConfigProvider,\n    SInputConfigProvider\n} from '@setup/providers/configuration/input-configuration/input-config-provider'\nimport { IBaseInputService, SBaseInputService } from './base-input-service'\n\nexport const SRadioInputService = Symbol.for('IRadioInputService')\n\nexport interface IRadioInputService extends IBuilderService<IRadioBaseInput> {\n    new (sm: IServiceManager): IRadioInputService\n    // Define the methods and properties for the base input service\n    // For example:\n    build: (descriptor: IFieldDescriptor) => Promise<IRadioBaseInput>\n}\n\nexport const RadioInputService = function (this: IRadioInputService, sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n    this.sm = sm\n    try {\n        this.build = async function (descriptor: IFieldDescriptor): Promise<IRadioBaseInput> {\n            const baseInputService = this.sm.lazy<IBaseInputService>(SBaseInputService)?.()\n            const _baseInput = baseInputService.build(descriptor)\n            const _clickInput = this.sm.lazy<IClickBaseInput>(SClickBaseInput)?.()\n            const _optionInput = this.sm.lazy<IOptionBaseInput>(\n                SOptionBaseInput,\n                descriptor.options\n            )?.()\n            const _radioInput = this.sm.lazy<IRadioBaseInput>(SRadioBaseInput)?.()\n\n            _clickInput.input = _baseInput\n            _optionInput.input = _baseInput\n            _radioInput.input = _baseInput\n            _radioInput.clickBase = _clickInput\n            _radioInput.optionBase = _optionInput\n\n            const dependencies = baseDependencyList(\n                _baseInput,\n                _clickInput,\n                _optionInput,\n                _radioInput\n            )\n\n            const configProvider = this.sm.lazy<IInputConfigProvider>(SInputConfigProvider)?.()\n            const config = configProvider.getConfig()\n            await sequenceInitializer(config, dependencies)\n            return _radioInput\n        }\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            RadioInputService.name,\n            `an error has occured when initializing ${RadioInputService.name} class: ${e.message}`\n        )\n        return undefined\n    }\n    // Register the base input service with the service manager\n} as any as IRadioInputService\n","import { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\nimport {\n    IClickBaseInput,\n    SClickBaseInput\n} from '@core/input-engine/variants/click-base/click-base-input.types'\nimport {\n    IOptionBaseInput,\n    SOptionBaseInput\n} from '@core/input-engine/variants/option-based/option-base-input.types'\n\nimport { IBuilderService } from '@core/factories/input-factory/input-factory'\nimport {\n    ISelectBaseInput,\n    SSelectBaseInput\n} from '@core/input-engine/variants/select-base/select-base-input.types'\nimport { sequenceInitializer } from '@core/managers/initialization-manager/sequence-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { IServiceManager } from '@core/managers/service-manager/service-manager.types'\n\nimport { baseDependencyList } from '@setup/providers/configuration/base-dependency/dependency.list.settings'\nimport {\n    IInputConfigProvider,\n    SInputConfigProvider\n} from '@setup/providers/configuration/input-configuration/input-config-provider'\nimport { IBaseInputService, SBaseInputService } from './base-input-service'\n\nexport const SSelectInputService = Symbol.for('ISelectInputService')\n\nexport interface ISelectInputService extends IBuilderService<ISelectBaseInput> {\n    new (sm: IServiceManager): ISelectInputService\n    // Define the methods and properties for the base input service\n    // For example:\n    build: (descriptor: IFieldDescriptor) => Promise<ISelectBaseInput>\n}\n\nexport const SelectInputService = function (this: ISelectInputService, sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n    this.sm = sm\n    try {\n        this.build = async function (descriptor: IFieldDescriptor): Promise<ISelectBaseInput> {\n            const baseInputService = this.sm.lazy<IBaseInputService>(SBaseInputService)?.()\n            const _baseInput = baseInputService.build(descriptor)\n            const _clickInput = this.sm.lazy<IClickBaseInput>(SClickBaseInput)?.()\n            const _optionInput = this.sm.lazy<IOptionBaseInput>(SOptionBaseInput)?.()\n            const _selectInput = this.sm.lazy<ISelectBaseInput>(SSelectBaseInput)?.()\n\n            _optionInput.options = descriptor.options\n            _clickInput.input = _baseInput\n            _optionInput.input = _baseInput\n            _selectInput.input = _baseInput\n            _selectInput.clickBase = _clickInput\n            _selectInput.optionBase = _optionInput\n\n            const dependencies = baseDependencyList(\n                _baseInput,\n                _clickInput,\n                _optionInput,\n                _selectInput\n            )\n\n            const configProvider = this.sm.lazy<IInputConfigProvider>(SInputConfigProvider)?.()\n            const config = configProvider.getConfig()\n            await sequenceInitializer(config, dependencies)\n            return _selectInput\n        }\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            SelectInputService.name,\n            `an error has occured when initializing ${SelectInputService.name} class: ${e.message}`\n        )\n        return undefined\n    }\n    // Register the base input service with the service manager\n} as any as ISelectInputService\n","import { IBuilderService } from '@core/factories/input-factory/input-factory'\nimport { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\nimport {\n    ITextBaseInput,\n    STextBaseInput\n} from '@core/input-engine/variants/text-base/text-base-input.types'\nimport { sequenceInitializer } from '@core/managers/initialization-manager/sequence-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { IServiceManager } from '@core/managers/service-manager/service-manager.types'\n\nimport { baseDependencyList } from '@setup/providers/configuration/base-dependency/dependency.list.settings'\nimport {\n    IInputConfigProvider,\n    SInputConfigProvider\n} from '@setup/providers/configuration/input-configuration/input-config-provider'\nimport { IBaseInputService, SBaseInputService } from './base-input-service'\n\nexport const STextInputService = Symbol.for('ITextInputService')\n\nexport interface ITextInputService extends IBuilderService<ITextBaseInput> {\n    new (sm: IServiceManager): ITextInputService\n    // Define the methods and properties for the base input service\n    // For example:\n    build: (descriptor: IFieldDescriptor) => Promise<ITextBaseInput>\n}\n\nexport const TextInputService = function (this: ITextInputService, sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n    this.sm = sm\n    try {\n        this.build = async function (descriptor: IFieldDescriptor): Promise<ITextBaseInput> {\n            const baseInputService = this.sm.lazy<IBaseInputService>(SBaseInputService)?.()\n            const _baseInput = baseInputService.build(descriptor)\n            const _textInput = this.sm.lazy<ITextBaseInput>(STextBaseInput)?.()\n            _textInput.input = _baseInput\n            const dependencies = baseDependencyList(_baseInput, _textInput)\n\n            const configProvider = this.sm.lazy<IInputConfigProvider>(SInputConfigProvider)?.()\n            const config = configProvider.getConfig()\n            await sequenceInitializer(config, dependencies)\n            return _textInput\n        }\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            TextInputService.name,\n            `an error has occured when initializing ${TextInputService.name} class: ${e.message}`\n        )\n        return undefined\n    }\n    // Register the base input service with the service manager\n} as any as ITextInputService\n","import { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\n\nimport { IBuilderService } from '@core/factories/input-factory/input-factory'\nimport {\n    IClickBaseInput,\n    SClickBaseInput\n} from '@core/input-engine/variants/click-base/click-base-input.types'\nimport { sequenceInitializer } from '@core/managers/initialization-manager/sequence-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { IServiceManager } from '@core/managers/service-manager/service-manager.types'\n\nimport { baseDependencyList } from '@setup/providers/configuration/base-dependency/dependency.list.settings'\nimport {\n    IInputConfigProvider,\n    SInputConfigProvider\n} from '@setup/providers/configuration/input-configuration/input-config-provider'\nimport { IBaseInputService, SBaseInputService } from './base-input-service'\n\nexport const SClickInputService = Symbol.for('IClickInputService')\n\nexport interface IClickInputService extends IBuilderService<IClickBaseInput> {\n    new (sm: IServiceManager): IClickInputService\n    // Define the methods and properties for the base input service\n    // For example:\n    build: (descriptor: IFieldDescriptor) => Promise<IClickBaseInput>\n}\n\nexport const ClickInputService = function (this: IClickInputService, sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n    this.sm = sm\n    try {\n        this.build = async function (descriptor: IFieldDescriptor): Promise<IClickBaseInput> {\n            const configProvider = this.sm.lazy<IInputConfigProvider>(SInputConfigProvider)?.()\n            const config = configProvider.getConfig()\n            const baseInputService = this.sm.lazy<IBaseInputService>(SBaseInputService)?.()\n            const _baseInput = baseInputService.build(descriptor)\n            const _clickInput = this.sm.lazy<IClickBaseInput>(SClickBaseInput)?.()\n            _clickInput.input = _baseInput\n            const dependencies = baseDependencyList(_baseInput, _clickInput)\n\n            await sequenceInitializer(config, dependencies)\n            return _clickInput\n        }\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            ClickInputService.name,\n            `an error has occured when initializing ${ClickInputService.name} class: ${e.message}`\n        )\n        return undefined\n    }\n    // Register the base input service with the service manager\n} as any as IClickInputService\n","import { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\n\nimport { IBuilderService } from '@core/factories/input-factory/input-factory'\nimport {\n    IMaskedBaseInput,\n    SMaskedBaseInput\n} from '@core/input-engine/variants/masked-base/masked-base-input.types'\nimport { sequenceInitializer } from '@core/managers/initialization-manager/sequence-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { IServiceManager } from '@core/managers/service-manager/service-manager.types'\n\nimport { baseDependencyList } from '@setup/providers/configuration/base-dependency/dependency.list.settings'\nimport {\n    IInputConfigProvider,\n    SInputConfigProvider\n} from '@setup/providers/configuration/input-configuration/input-config-provider'\nimport { IBaseInputService, SBaseInputService } from './base-input-service'\n\nexport const SMaskedInputService = Symbol.for('IMaskedInputService')\n\nexport interface IMaskedInputService extends IBuilderService<IMaskedBaseInput> {\n    new (sm: IServiceManager): IMaskedInputService\n    // Define the methods and properties for the base input service\n    // For example:\n    build: (descriptor: IFieldDescriptor) => Promise<IMaskedBaseInput>\n}\n\nexport const MaskedInputService = function (this: IMaskedInputService, sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n    this.sm = sm\n    try {\n        this.build = async function (descriptor: IFieldDescriptor): Promise<IMaskedBaseInput> {\n            console.log('🔍 descriptor.mask:', {\n                mask: descriptor.mask,\n                type: typeof descriptor.mask,\n                isArray: Array.isArray(descriptor.mask)\n            })\n\n            const configProvider = this.sm.lazy<IInputConfigProvider>(SInputConfigProvider)?.()\n            const config = configProvider.getConfig()\n\n            const baseInputService = this.sm.lazy<IBaseInputService>(SBaseInputService)?.()\n            const _baseInput = baseInputService.build(descriptor)\n            const _maskedInput = this.sm.lazy<IMaskedBaseInput>(\n                SMaskedBaseInput,\n                descriptor.mask\n            )?.()\n            _maskedInput.input = _baseInput\n            const dependencies = baseDependencyList(_baseInput, _maskedInput)\n\n            await sequenceInitializer(config, dependencies)\n            return _maskedInput\n        }\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            MaskedInputService.name,\n            `an error has occured when initializing ${MaskedInputService.name} class: ${e.message}`\n        )\n        return undefined\n    }\n    // Register the base input service with the service manager\n} as any as IMaskedInputService\n","import { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\n\nimport { IBuilderService } from '@core/factories/input-factory/input-factory'\nimport {\n    IOptionBaseInput,\n    SOptionBaseInput\n} from '@core/input-engine/variants/option-based/option-base-input.types'\nimport { sequenceInitializer } from '@core/managers/initialization-manager/sequence-initializer'\nimport { logManager } from '@core/managers/log-manager/log-manager'\nimport { IServiceManager } from '@core/managers/service-manager/service-manager.types'\n\nimport { baseDependencyList } from '@setup/providers/configuration/base-dependency/dependency.list.settings'\nimport {\n    IInputConfigProvider,\n    SInputConfigProvider\n} from '@setup/providers/configuration/input-configuration/input-config-provider'\nimport { IBaseInputService, SBaseInputService } from './base-input-service'\n\nexport const SOptionInputService = Symbol.for('IOptionInputService')\n\nexport interface IOptionInputService extends IBuilderService<IOptionBaseInput> {\n    new (sm: IServiceManager): IOptionInputService\n    // Define the methods and properties for the base input service\n    // For example:\n    build: (descriptor: IFieldDescriptor) => Promise<IOptionBaseInput>\n}\n\nexport const OptionInputService = function (this: IOptionInputService, sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n    this.sm = sm\n    try {\n        this.build = async function (descriptor: IFieldDescriptor): Promise<IOptionBaseInput> {\n            const baseInputService = this.sm.lazy<IBaseInputService>(SBaseInputService)?.()\n            const _baseInput = baseInputService.build(descriptor)\n            const _optionInput = this.sm.lazy<IOptionBaseInput>(\n                SOptionBaseInput,\n                descriptor.options\n            )?.()\n            _optionInput.input = _baseInput\n            const dependencies = baseDependencyList(_baseInput, _optionInput)\n\n            const configProvider = this.sm.lazy<IInputConfigProvider>(SInputConfigProvider)?.()\n            const config = configProvider.getConfig()\n            await sequenceInitializer(config, dependencies)\n            return _optionInput\n        }\n    } catch (e: any) {\n        logManager(\n            undefined,\n            'critical',\n            OptionInputService.name,\n            `an error has occured when initializing ${OptionInputService.name} class: ${e.message}`\n        )\n        return undefined\n    }\n    // Register the base input service with the service manager\n} as any as IOptionInputService\n","import { InputTypeNames } from '@core/framework/common/common.input.types'\nimport { IServiceManager } from '@core/managers/service-manager/service-manager.types'\n\nimport {\n    ICheckInputService,\n    SCheckInputService\n} from '@core/factories/input-builder-services/check-input-service'\nimport {\n    IRadioInputService,\n    SRadioInputService\n} from '@core/factories/input-builder-services/radio-input-service'\nimport {\n    ISelectInputService,\n    SSelectInputService\n} from '@core/factories/input-builder-services/select-input-service'\nimport {\n    ITextInputService,\n    STextInputService\n} from '@core/factories/input-builder-services/text-input-service'\nimport { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\nimport { IMaskedInputService, SMaskedInputService } from '../input-builder-services'\nimport { InputTypeMap } from './mapping/input-type-map'\n\nexport const SInputFactory = Symbol.for('IInputFactory')\n\nexport interface IInputFactory {\n    new (serviceManager: IServiceManager): IInputFactory\n    sm: IServiceManager\n    InputsRegistry: <T>(type: keyof InputTypeMap) => IBuilder<T> | undefined\n    create: <T>(type: InputTypeNames) => IBuilder<T>\n}\n\nexport type IBuilder<T> = (descriptor: IFieldDescriptor) => Promise<T>\n\nexport interface IBuilderService<T> {\n    sm: IServiceManager\n    build: IBuilder<T>\n}\n\nexport const InputFactory = function (this: IInputFactory, serviceManager: IServiceManager) {\n    this.sm = serviceManager\n\n    // 🎯 OPTIMIZATION: Cache builder functions to avoid repeated IoC lookups (15-20% gain)\n    // Instead of resolving services and creating builders for every field, cache them\n    const builderCache = new Map<keyof InputTypeMap, IBuilder<any>>()\n\n    this.InputsRegistry = function <T>(\n        this: IInputFactory,\n        type: keyof InputTypeMap\n    ): IBuilder<T> | undefined {\n        // Check cache first\n        if (builderCache.has(type)) {\n            return builderCache.get(type) as IBuilder<T>\n        }\n\n        // Create and cache builder\n        let builder: IBuilder<T> | undefined\n        switch (type) {\n            case 'toggle':\n            case 'checkbox':\n                const cbs = this.sm.lazy<ICheckInputService>(SCheckInputService)?.()\n                builder = cbs.build.bind(cbs) as IBuilder<T>\n                break\n            case 'select':\n                const sis = this.sm.lazy<ISelectInputService>(SSelectInputService)?.()\n                builder = sis.build.bind(sis) as IBuilder<T>\n                break\n            case 'radio':\n                const srs = this.sm.lazy<IRadioInputService>(SRadioInputService)?.()\n                builder = srs.build.bind(srs) as IBuilder<T>\n                break\n            case 'date':\n                const sms = this.sm.lazy<IMaskedInputService>(SMaskedInputService)?.()\n                builder = sms.build.bind(sms) as IBuilder<T>\n                break\n            case 'text':\n            default:\n                const sts = this.sm.lazy<ITextInputService>(STextInputService)?.()\n                builder = sts.build.bind(sts) as IBuilder<T>\n                break\n        }\n\n        if (builder) {\n            builderCache.set(type, builder)\n        }\n        return builder\n    }\n\n    this.create = function <T>(this: IInputFactory, type: InputTypeNames): IBuilder<T> {\n        return this.InputsRegistry<T>(type) as IBuilder<T>\n    }\n} as any as IInputFactory\n","import {\n    IServiceManager,\n    SServiceManager\n} from '@core/managers/service-manager/service-manager.types'\nimport { InputFactory, SInputFactory } from '../input-factory/input-factory'\n\nexport const setupInputsFactory = function (sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n\n    sm.registerClass(SInputFactory, InputFactory, {\n        lifetime: 'singleton',\n        dependencies: [SServiceManager]\n    })\n}\n","import {\n    IServiceManager,\n    SServiceManager\n} from '@core/managers/service-manager/service-manager.types'\nimport { BaseInputService, SBaseInputService } from '../input-builder-services/base-input-service'\nimport {\n    CheckInputService,\n    SCheckInputService\n} from '../input-builder-services/check-input-service'\nimport {\n    ClickInputService,\n    SClickInputService\n} from '../input-builder-services/click-input-service'\nimport {\n    MaskedInputService,\n    SMaskedInputService\n} from '../input-builder-services/masked-input-service'\nimport {\n    OptionInputService,\n    SOptionInputService\n} from '../input-builder-services/option-input-service'\nimport {\n    RadioInputService,\n    SRadioInputService\n} from '../input-builder-services/radio-input-service'\nimport {\n    SelectInputService,\n    SSelectInputService\n} from '../input-builder-services/select-input-service'\nimport { STextInputService, TextInputService } from '../input-builder-services/text-input-service'\n\nexport const setupInputsRegistry = function (sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n\n    sm.registerClass(SBaseInputService, BaseInputService, {\n        lifetime: 'transient',\n        dependencies: [SServiceManager]\n    })\n\n    sm.registerClass(SCheckInputService, CheckInputService, {\n        lifetime: 'transient',\n        dependencies: [SServiceManager]\n    })\n\n    sm.registerClass(SClickInputService, ClickInputService, {\n        lifetime: 'transient',\n        dependencies: [SServiceManager]\n    })\n\n    sm.registerClass(SMaskedInputService, MaskedInputService, {\n        lifetime: 'transient',\n        dependencies: [SServiceManager]\n    })\n\n    sm.registerClass(SOptionInputService, OptionInputService, {\n        lifetime: 'transient',\n        dependencies: [SServiceManager]\n    })\n\n    sm.registerClass(SRadioInputService, RadioInputService, {\n        lifetime: 'transient',\n        dependencies: [SServiceManager]\n    })\n\n    sm.registerClass(SSelectInputService, SelectInputService, {\n        lifetime: 'transient',\n        dependencies: [SServiceManager]\n    })\n\n    sm.registerClass(STextInputService, TextInputService, {\n        lifetime: 'transient',\n        dependencies: [SServiceManager]\n    })\n}\n","import { IFormular } from '@core/formular-engine/formular-base/formular-base.types'\nimport { IFormularManager } from '../formular-manager.types'\n\nexport const clear = function <T extends object>(this: IFormularManager, form: IFormular<T>): void {\n    this.forms.delete(form.id)\n}\n","export enum LoadingStatusEnum {\n    Loaded = 'Loaded',\n    InProgress = 'InProgress',\n    Reload = 'Reload',\n    Error = 'Error'\n}\n","// add-fields.ts\n\nimport { shallowCopy } from '@core/framework/utility/shallow-copy'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IFormular } from '../formular-base.types'\n\n/**\n * Adds fields to the Formy instance.\n * @param flds - Fields to be added.\n */\nexport function addFields<T extends object>(this: IFormular<T>, ...flds: IExtendedInput[]) {\n    this.originFields = []\n\n    for (const fld of flds) {\n        const existingFieldRef = this.fields.find(\n            (o: IExtendedInput) => o.input.id === fld.input.id\n        )\n        if (!existingFieldRef) {\n            if (this.triggerKeyWordType.length > 1) {\n                // console.log('stop')\n            }\n\n            fld.input.validationManager.setTriggerKeyWord(this.triggerKeyWordType)\n\n            if (this.autoTracker) {\n                fld.input.notificationManager.autoTracker = this.autoTracker\n            }\n\n            fld.input.formular = this\n\n            this.fields.push(fld)\n            this.originFields.push(shallowCopy(fld))\n        }\n    }\n}\n","// validate-all.ts\n\nimport { IFormular } from '../formular-base.types'\n\n/**\n * Validates all fields in the Formular instance.\n *\n * @returns Promise that resolves to true if all fields are valid, false otherwise\n */\nexport async function checkAllFieldsAreValid<T extends object>(\n    this: IFormular<T>\n): Promise<boolean> {\n    const result = await new Promise<boolean>((resolve) => {\n        const validationResults: boolean[] = []\n\n        for (const fld of this.fields) {\n            validationResults.push(fld.input.isValid)\n        }\n\n        // Update form validity based on all field results\n        this.isValid =\n            validationResults.length > 0 ? validationResults.every((isValid) => isValid) : false\n\n        resolve(this.isValid)\n    })\n\n    return result\n    // this.observers?.trigger()\n}\n","// check-changes.ts\n\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IFieldChange, IFormular } from '../formular-base.types'\n\n/**\n * Checks for changes in the Formy instance.\n */\nexport function checkChanges<T extends object>(this: IFormular<T>) {\n    const changes: IFieldChange[] = []\n    for (const fld of this.fields) {\n        const originalField = this.originFields.find(\n            (o: IExtendedInput) => o.input.id === fld.input.id\n        )\n\n        const originalValue = originalField?.input.valueManager.getValue(originalField)\n        const newValue = fld.input.valueManager.getValue(fld)\n        if (originalValue !== newValue) {\n            changes.push({ name: fld.input.name, hasChanges: true })\n            break\n        }\n    }\n    this.isDirty = changes.some((o) => o.hasChanges)\n    this.isValid = this.fields.every((o: IExtendedInput) => o.input.isValid)\n    // this.observers.trigger()\n}\n","/**\n * Clears all form field values and resets validation state\n */\nimport type { IFormular } from '../formular-base.types'\n\nexport function clear<T extends object>(this: IFormular<T>): void {\n    this.fields.forEach((field) => {\n        field.input.value = null\n        field.input.objectValue = null\n        field.input.errors = []\n        field.input.isDirty = false\n        field.input.isPristine = true\n    })\n\n    this.isDirty = false\n    this.isValid = true\n}\n","/**\n * Clears a specific field's value and validation errors\n */\nimport type { IFormular } from '../formular-base.types'\n\nexport function clearField<T extends object>(this: IFormular<T>, fieldName: string): void {\n    const field = this.getField(fieldName)\n    if (field) {\n        field.value = null\n        field.input.objectValue = null\n        field.errors = []\n        field.input.isDirty = false\n        field.input.isPristine = true\n    }\n}\n","/**\n * Disposes all fields, clears references, and prepares for garbage collection\n */\nimport type { IFormular } from '../formular-base.types'\n\nexport function dispose<T extends object>(this: IFormular<T>): void {\n    // Clean up all fields\n    this.fields.forEach((field) => {\n        field.input.value = null\n        field.input.objectValue = null\n        field.input.errors = []\n        field.input.guides = []\n    })\n\n    // Clear arrays\n    this.fields = []\n    this.originFields = []\n\n    // Reset state\n    this.isValid = false\n    this.isDirty = false\n}\n","// get-data.ts\n\nimport { InputDataTypes } from '@core/framework/common/common.input.data.types'\nimport { IFormular } from '../formular-base.types'\n\n/**\n * Retrieves the data from the Formy instance.\n * @returns A record containing field values.\n */\nexport function getData<T extends object>(this: IFormular<T>) {\n    const output: Record<string, InputDataTypes> = {}\n    for (const f of this.fields) {\n        const value = f.input.valueManager.getValue(f)\n        output[f.input.name] = value\n    }\n    return output\n}\n","/**\n * Gets all validation errors from all form fields\n */\nimport type { IFieldError } from '@core/framework/models/errors/i-field-error'\nimport type { IFormular } from '../formular-base.types'\n\nexport function getErrors<T extends object>(this: IFormular<T>): Record<string, IFieldError[]> {\n    const errors: Record<string, any[]> = {}\n\n    this.fields.forEach((field) => {\n        if (field.input.errors && field.input.errors.length > 0) {\n            errors[field.input.name] = field.input.errors\n        }\n    })\n\n    return errors\n}\n","// get-field.ts\n\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { IFormular } from '../formular-base.types'\n\n/**\n * Retrieves a field by its name from the Formy instance.\n * @param fieldName - The name of the field to retrieve.\n * @returns The field if found, otherwise undefined.\n */\nexport function getField<T extends object>(this: IFormular<T>, fieldName: string) {\n    return this.fields.find((field: IExtendedInput) => field.input.name === fieldName)\n}\n","import { IFormular, IFormularFlags } from '@core/formular-engine/formular-base/formular-base.types'\n\nexport const getFormFlags = function <T extends object>(\n    this: IFormular<T>\n): Partial<IFormularFlags> {\n    if (!this.fields) return {}\n    const isDirty = this.fields.some((field) => field.input.isDirty)\n    const isValid = this.fields.every((field) => field.input.isValid)\n\n    return {\n        isBusy: this.isBusy,\n        isDirty: isDirty,\n        isValid: isValid\n    }\n}\n","// has-changes.ts\n\nimport { IFormular } from '../formular-base.types'\n\n/**\n * Checks if the Formy instance has changes and executes a callback if so.\n * @param callback - The callback to execute if changes are detected.\n */\nexport const hasChanges = function <T extends object>(this: IFormular<T>, callback: () => void) {\n    this.observers.subscribe(callback.bind(this), false)\n}\n","import { IFormular } from '../formular-base.types'\n\n/**\n * Subscribe to form or field-level notifications with optional debouncing.\n * This is an introspection helper and is gated by enableIntrospection config.\n * Zero cost if introspection is disabled.\n *\n * @param channel - Undefined for form-wide, or a field ID for field-specific updates\n * @param callback - Function to call when the channel fires\n * @param options - Optional debounce delay override\n * @returns Unsubscribe function\n */\nexport const observe = function <T extends object>(\n    this: IFormular<T>,\n    channel: string | undefined,\n    callback: () => void,\n    options?: { debounceDelay?: number }\n) {\n    const introspectionEnabled = this._introspectionEnabled\n    const notificationManager = this.manager?.notificationManager\n\n    if (!introspectionEnabled || !notificationManager) {\n        // Return a no-op unsubscriber if introspection is disabled\n        return () => {}\n    }\n\n    const debugStreamMaxSize = this._debugStreamMaxSize || 100\n    const delay =\n        options?.debounceDelay ?? this.observablesDelay ?? this.inputDelay ?? 100\n\n    // Create wrapper callback that logs to debugStream\n    const wrappedCallback = () => {\n        // Log to debug stream (ring buffer)\n        const debugStream = this.debugStream || []\n        debugStream.push({\n            type: 'observer_fired',\n            channel: channel || 'form-wide',\n            timestamp: Date.now()\n        })\n        if (debugStream.length > debugStreamMaxSize) {\n            debugStream.shift()\n        }\n\n        // Call the actual callback\n        callback()\n    }\n\n    // Subscribe to the channel using notificationManager's observers\n    if (channel) {\n        notificationManager.observers.subscribe(channel, wrappedCallback, false)\n    } else {\n        // Form-wide subscription (no debounce needed for introspection)\n        notificationManager.observers.subscribe(wrappedCallback, false)\n    }\n\n    // Track this subscription for cleanup\n    const subscriptions = this._observerSubscriptions\n    if (subscriptions) {\n        if (!subscriptions.has(channel)) {\n            subscriptions.set(channel, [])\n        }\n        subscriptions.get(channel)?.push(wrappedCallback)\n    }\n\n    // Return unsubscriber\n    return () => {\n        if (channel) {\n            notificationManager.observers.unSubscribe(channel, wrappedCallback, false)\n        } else {\n            notificationManager.observers.unSubscribe(wrappedCallback, false)\n        }\n\n        // Clean up tracking\n        if (subscriptions) {\n            const callbacks = subscriptions.get(channel)\n            if (callbacks) {\n                const idx = callbacks.indexOf(wrappedCallback)\n                if (idx > -1) {\n                    callbacks.splice(idx, 1)\n                }\n            }\n        }\n    }\n}\n","/**\n * Parses data object and populates form fields with values\n * Maps object keys to field names and updates field values\n */\nimport type { IFormular } from '../formular-base.types'\n\nexport function parse<T extends object>(this: IFormular<T>, data: T): void {\n    if (!data || typeof data !== 'object') {\n        return\n    }\n\n    Object.entries(data).forEach(([fieldName, value]) => {\n        const field = this.getField(fieldName)\n        if (field) {\n            field.input.value = value\n        }\n    })\n}\n","/**\n * Pre-validates a specific field before user interaction completes\n * Useful for inline validation during typing\n */\nimport type { IFormular } from '../formular-base.types'\n\nexport function preValidateField<T extends object>(this: IFormular<T>, fieldName: string): boolean {\n    const field = this.getField(fieldName)\n    if (!field) {\n        return false\n    }\n\n    // Pre-validation logic - can be extended\n    return field.input.isValid\n}\n","/**\n * Resets form to its original state with default values\n */\nimport type { IFormular } from '../formular-base.types'\n\nexport function reset<T extends object>(this: IFormular<T>): void {\n    this.fields.forEach((field) => {\n        field.input.value = field.input.defaultValue\n        field.input.objectValue = null\n        field.input.errors = []\n        field.input.isDirty = false\n        field.input.isPristine = true\n    })\n\n    this.isDirty = false\n    this.isValid = true\n}\n","// set-is-busy.ts\n\nimport { LoadingStatus } from '@core/status'\nimport { IFormular } from '../formular-base.types'\n\n/**\n * Sets the busy status of the Formular instance.\n * Updates the internal loading status which is exposed via the isBusy boolean getter.\n *\n * @param status - The loading status to set.\n */\nexport const setIsBusy = function <T extends object>(this: IFormular<T>, status: LoadingStatus) {\n    ;(this as any)._loadingStatus = status\n    // Trigger observers if needed\n    // this.observers?.trigger()\n}\n","// set-validation-trigger-mode.ts\n\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\n\nimport { EventsType } from '@core/framework/events/events.types'\nimport { IFormular } from '../formular-base.types'\n\n/**\n * Sets the validation trigger mode for the Formular instance.\n * @param mode - An array of validation trigger modes to set.\n */\nexport const setTriggerKeyWord = function <T extends object>(\n    this: IFormular<T>,\n    mode: EventsType[]\n) {\n    // Guard against null/undefined\n    if (!mode || !Array.isArray(mode)) {\n        console.warn('setTriggerKeyWord: Invalid mode provided, using empty array')\n        this.triggerKeyWordType = []\n        return\n    }\n\n    this.triggerKeyWordType = mode\n    /** this will make validation being activated only after the first submit invoke */\n    this.validateOnFirstSubmit = mode.includes('validateOnFormFirstSubmit')\n\n    /** DO NEVER REGISTER ON VALIDATE NOTIFICATION EVENT FOR EACH FIELD HERE!!! */\n    this.fields.forEach((f: IExtendedInput) => {\n        f.input.validationManager.setTriggerKeyWord(mode)\n    })\n}\n","import { IInputBase } from '@core/input-engine/core/input-base/input-base.types'\n\nexport const hasValidationOptions = (input: IInputBase): boolean => {\n    if (!input) return false\n\n    if (!input.validationOptions) {\n        input.message(\n            'info',\n            hasValidationOptions.name,\n            `${input.name} has no validationOptions defined`\n        )\n        return false\n    }\n\n    if (Object.keys(input.validationOptions).length === 0) {\n        input.message(\n            'info',\n            hasValidationOptions.name,\n            `${input.name} has defined validationOptions but no validation strategies found`\n        )\n\n        return false\n    }\n\n    return true\n}\n","import { newEvent } from '@core/framework/events/new-event'\nimport { hasValidationOptions } from '@core/managers/validation-manager/helpers/has-validation-options'\nimport { IValidationResult } from '@core/managers/validation-manager/validation-manager.types'\nimport { LoadingStatus } from '@core/status'\nimport { IFormular } from '../formular-base.types'\n\nexport const submit = async function <T extends object>(this: IFormular<T>): Promise<T | null> {\n    this.setIsBusy(LoadingStatus.InProgress)\n    return await new Promise<T | null>(async (resolve, reject) => {\n        if (this.validateOnFirstSubmit) {\n            this.validateOnFirstSubmit = false\n        }\n\n        const validationResults: IValidationResult[] = []\n\n        for (const f of this.fields) {\n            if (!hasValidationOptions(f.input)) {\n                f.input.message(\n                    'info',\n                    f.input.name,\n                    `No validation options found for field ${f.input.name}, skipping validation`\n                )\n                continue\n            }\n\n            validationResults.push(\n                ...(await f.input.handleValidationAsync(\n                    newEvent(f.input.name, submit.name, 'onValidate', `submit`, f.input.name, f)\n                ))\n            )\n        }\n        const validFields: boolean[] = []\n\n        validationResults.forEach((result: IValidationResult) => {\n            validFields.push(result.state)\n        })\n\n        if (validFields.every((result) => result)) {\n            this.setIsBusy(LoadingStatus.Loaded)\n            resolve(this.getData() as T)\n        } else {\n            this.setIsBusy(LoadingStatus.Error)\n            reject(new Error('Form is not valid'))\n        }\n    })\n}\n","import { EventsType, IEvents } from '@core/framework/events/events.types'\nimport { newEvent } from '@core/framework/events/new-event'\nimport { IFormular } from '../formular-base.types'\n\n/**\n * Subscribe to form-level events with a fluent API.\n * Returns a subscription object with .on() method for attaching callbacks.\n *\n * @param eventType - The event type to subscribe to (e.g., 'onValidate', 'onUiUpdate')\n * @param subscriptionName - Optional name/identifier for this subscription\n * @returns Subscription object with .on(callback) method\n *\n * @example\n * form.subscribe('onValidate', 'debug').on((data) => {\n *   console.log('Validation event:', data);\n * });\n */\nexport const subscribe = function <T extends object>(\n    this: IFormular<T>,\n    eventType: EventsType,\n    subscriptionName?: string\n) {\n    const form = this\n    const notificationManager = form.manager?.notificationManager\n\n    if (!notificationManager) {\n        console.warn('[Form.subscribe] NotificationManager not available')\n        return {\n            on: () => {\n                console.warn(\n                    '[Form.subscribe] Cannot subscribe - NotificationManager not initialized'\n                )\n                return () => {}\n            }\n        }\n    }\n\n    // Return fluent API object with .on() method\n    return {\n        /**\n         * Attach callback to the subscribed event\n         * @param callback - Function to call when event fires\n         * @returns Unsubscribe function\n         */\n        on: <E extends IEvents>(callback: (data: E) => void) => {\n            const subscriptionId = subscriptionName || `subscription-${Date.now()}`\n\n            // Create notification handler with proper IEvents structure\n            const notification = {\n                event: newEvent('form', subscriptionId, eventType, subscriptionId),\n                method: (data: IEvents) => {\n                    callback(data as E)\n                }\n            }\n\n            // Register with notification manager\n            notificationManager.accept(notification)\n\n            // Return unsubscribe function\n            return () => {\n                notificationManager.dismiss(notification)\n            }\n        }\n    }\n}\n","import { IFormular } from '../formular-base.types'\n\n/**\n * Unsubscribe all observers attached via observe().\n * Clears all introspection subscriptions.\n */\nexport const unobserveAll = function <T extends object>(this: IFormular<T>) {\n    const subscriptions = this._observerSubscriptions\n    const notificationManager = this.manager?.notificationManager\n\n    if (!notificationManager || !subscriptions) {\n        return\n    }\n\n    // Unsubscribe all tracked callbacks\n    subscriptions.forEach((callbacks, channel) => {\n        callbacks.forEach((callback) => {\n            if (channel) {\n                notificationManager.observers.unSubscribe(channel, callback, false)\n            } else {\n                notificationManager.observers.unSubscribe(callback, false)\n            }\n        })\n    })\n\n    // Clear the subscriptions map\n    subscriptions.clear()\n\n    // Clear the debug stream\n    this.debugStream = []\n}\n","/**\n * Updates a specific field's value\n */\nimport type { InputDataTypes } from '@core/framework/common/common.input.data.types'\nimport type { IFormular } from '../formular-base.types'\n\nexport function updateField<T extends object>(\n    this: IFormular<T>,\n    fieldName: string,\n    value: InputDataTypes\n): void {\n    const field = this.getField(fieldName)\n    if (field) {\n        field.input.value = value\n        field.input.isDirty = true\n        field.input.isPristine = false\n        this.isDirty = true\n    }\n}\n","/**\n * Validates a specific field and updates its error state\n */\nimport type { IFormular } from '../formular-base.types'\n\nexport function validateField<T extends object>(this: IFormular<T>, fieldName: string): void {\n    const field = this.getField(fieldName)\n    if (!field) {\n        return\n    }\n\n    // Validation logic would typically call the validation manager\n    // This is a basic implementation that can be extended\n    field.input.isValid = field.input.errors.length === 0\n}\n","/**\n * Validates all form fields and returns overall validity\n */\nimport type { IFormular } from '../formular-base.types'\n\nexport async function validateForm<T extends object>(this: IFormular<T>): Promise<boolean> {\n    return await this.checkAllFieldsAreValid()\n}\n","/**\n * FORMULAR - Formular Base Engine\n * Copyright (c) 2025 Piana Tadeo\n * Licensed under MIT License\n *\n * Core form instance implementation with reactive state management\n */\n\nimport { IFormularManager } from '@core/managers/formular-manager/formular-manager.types'\nimport { LoadingStatus } from '@core/status'\nimport { IFormular } from './formular-base.types'\nimport { addFields } from './prototype/add-fields'\nimport { checkAllFieldsAreValid } from './prototype/check-all-fields-are-valid'\nimport { checkChanges } from './prototype/check-changes'\nimport { clear } from './prototype/clear'\nimport { clearField } from './prototype/clear-field'\nimport { dispose } from './prototype/dispose'\nimport { getData } from './prototype/get-data'\nimport { getErrors } from './prototype/get-errors'\nimport { getField } from './prototype/get-field'\nimport { getFormFlags } from './prototype/get-form-flags'\nimport { hasChanges } from './prototype/has-changes'\nimport { observe } from './prototype/observe'\nimport { parse } from './prototype/parse'\nimport { preValidateField } from './prototype/pre-validate-field'\nimport { reset } from './prototype/reset'\nimport { setIsBusy } from './prototype/set-is-busy'\nimport { setTriggerKeyWord } from './prototype/set-validation-trigger-mode'\nimport { submit } from './prototype/submit'\nimport { subscribe } from './prototype/subscribe'\nimport { unobserveAll } from './prototype/unobserve-all'\nimport { updateField } from './prototype/update-field'\nimport { validateField } from './prototype/validate-field'\nimport { validateForm } from './prototype/validate-form'\n\nexport const Formular = function <T extends object>(\n    this: IFormular<T>,\n    id: string,\n    manager: IFormularManager\n) {\n    Object.defineProperty(this, 'id', {\n        value: id,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n\n    this.fields = []\n    this.originFields = []\n    this.isValid = true\n    this._loadingStatus = LoadingStatus.Loaded\n    this.triggerKeyWordType = []\n    this.isDirty = false\n\n    // Initialize introspection helpers (gated by config, zero cost if disabled)\n    this._observerSubscriptions = new Map<string | undefined, Array<() => void>>()\n    this._introspectionEnabled = false\n    this._debugStreamMaxSize = 100\n    this.debugStream = []\n\n    // Define isBusy as a computed property returning boolean\n    Object.defineProperty(this, 'isBusy', {\n        get: function () {\n            return this._loadingStatus !== LoadingStatus.Loaded\n        },\n        enumerable: true,\n        configurable: false\n    })\n\n    Object.defineProperty(this, 'manager', {\n        value: manager,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n\n    Object.defineProperty(this, 'notificationManager', {\n        value: manager.notificationManager,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n} as any as IFormular<any>\n\nObject.assign(Formular.prototype, {\n    addFields,\n    checkAllFieldsAreValid,\n    checkChanges,\n    clear,\n    clearField,\n    dispose,\n    getData,\n    getErrors,\n    getField,\n    getFormFlags,\n    hasChanges,\n    observe,\n    parse,\n    preValidateField,\n    reset,\n    setIsBusy,\n    setTriggerKeyWord,\n    submit,\n    subscribe,\n    unobserveAll,\n    updateField,\n    validateField,\n    validateForm\n})\n","import { Formular } from '@core/formular-engine/formular-base/formular-base'\nimport { IFormular } from '@core/formular-engine/formular-base/formular-base.types'\nimport { IFormularManager } from '../formular-manager.types'\n\nexport const createEmpty = function <T extends object>(\n    this: IFormularManager,\n    name: string\n): IFormular<T> | undefined {\n    const frm = new Formular(name, this)\n    this.forms.set(frm.id, frm)\n    return frm\n}\n","import { Formular } from '@core/formular-engine/formular-base/formular-base'\nimport { IFormular } from '@core/formular-engine/formular-base/formular-base.types'\n\nimport { IInputFactory, SInputFactory } from '@core/factories/input-factory/input-factory'\nimport { IFieldDescriptor } from '@core/framework/schema/descriptor/field.descriptor'\nimport { IExtendedInput } from '@core/input-engine/core/input-base/input-base.types'\nimport { SConfigurationManager } from '@core/managers/configuration-manager/interfaces/i-configuration-manager'\nimport {\n    IValidationTriggerService,\n    SValidationTriggerService\n} from '@setup/services/validation-trigger-service'\nimport { IFormularManager } from '../formular-manager.types'\n\nexport const createFromDescriptors = async function <T extends object>(\n    this: IFormularManager,\n    id: string,\n    descriptors: IFieldDescriptor[]\n): Promise<IFormular<T> | undefined> {\n    if (this.forms.has(id)) {\n        const existingForm = this.forms.get(id)\n        return existingForm as IFormular<T>\n    }\n    const frm = new Formular(id, this)\n\n    // Enable introspection helpers if configured\n    const configManager = this.sm.lazy<any>(SConfigurationManager)?.()\n    const introspectionEnabled =\n        configManager?.getConfigByName('behavior', 'form', 'enableIntrospection') ?? false\n    const debugStreamSize =\n        configManager?.getConfigByName('behavior', 'form', 'debugStreamSize') ?? 100\n\n    ;(frm as any)._introspectionEnabled = introspectionEnabled\n    ;(frm as any)._debugStreamMaxSize = debugStreamSize\n\n    const factory = this.sm.lazy<IInputFactory>(SInputFactory)?.()\n\n    const fields: IExtendedInput[] = []\n\n    for (const descriptor of descriptors) {\n        if (!descriptor) {\n            continue\n        }\n        const fieldBuilder = factory.create(descriptor.type)\n        const field = await fieldBuilder(descriptor)\n        fields.push(field as IExtendedInput)\n    }\n\n    frm.addFields(...fields)\n\n    // Set validation triggers AFTER addFields so fields are present and\n    // setTriggerKeyWord's forEach can propagate to each field's validationManager.\n    // Calling it before addFields is a no-op because frm.fields is empty.\n    const validationTriggerService =\n        this.sm.lazy<IValidationTriggerService>(SValidationTriggerService)?.()\n    if (validationTriggerService?.triggers?.length) {\n        frm.setTriggerKeyWord(validationTriggerService.triggers)\n    }\n\n    this.forms.set(id, frm)\n    return frm\n}\n","import { IFormular } from '@core/formular-engine/formular-base/formular-base.types'\nimport { IEntityScheme } from '@core/framework/schema/field-schema/field-schema-types'\n\nimport { mapSchemaToFieldDescriptor } from '@core/framework/converters/to-field-descriptor'\nimport { IFormularManager } from '../formular-manager.types'\n\nexport const createFromSchema = function <T extends object>(\n    this: IFormularManager,\n\n    schema: IEntityScheme\n): IFormular<T> | undefined {\n    if (this.forms.has(schema.name)) {\n        const existingForm = this.forms.get(schema.name)\n        return existingForm as IFormular<T>\n    }\n    const descriptors = mapSchemaToFieldDescriptor(schema)\n    this.createFromDescriptors(schema.name, descriptors)\n}\n","import { IFormularManager } from '../formular-manager.types'\n\nexport const getData = function <T extends object>(\n    this: IFormularManager,\n    formId: string\n): T | undefined {\n    const form = this.forms.get(formId)\n    return form ? (form.getData() as T) : undefined\n}\n","import { IFormular } from '@core/formular-engine/formular-base/formular-base.types'\nimport { IFormularManager } from '../formular-manager.types'\n\nexport const getForm = function <T extends object>(\n    this: IFormularManager,\n    formId: string\n): IFormular<T> | undefined {\n    return this.forms.get(formId)\n}\n","import { IFormularManager } from '../formular-manager.types'\n\nexport const validate = async function <T extends object>(\n    this: IFormularManager,\n    formId: string\n): Promise<boolean> {\n    const form = this.forms.get(formId)\n    if (!form) return false\n\n    return await form.checkAllFieldsAreValid()\n}\n","/**\n * FORMULAR - FormularManager Core\n * Copyright (c) 2025 Piana Tadeo\n * Licensed under MIT License\n *\n * Central form management service for creating and managing form instances\n */\n\nimport { IFormularManager } from './formular-manager.types'\nimport { clear } from './prototype/clear'\n\nimport { INotificationManager } from '../notification-manager/notification-manager-base.types'\nimport { IServiceManager } from '../service-manager/service-manager.types'\nimport { createEmpty } from './prototype/create-empty'\nimport { createFromDescriptors } from './prototype/create-from-descriptors'\nimport { createFromSchema } from './prototype/create-from-schema'\nimport { getData } from './prototype/get-data'\nimport { getForm } from './prototype/get-form'\nimport { validate } from './prototype/validate'\n\nexport const FormularManager = function (\n    this: IFormularManager,\n    serviceManager: IServiceManager,\n    notificationManagerInstance: INotificationManager\n) {\n    this.sm = serviceManager\n\n    Object.defineProperty(this, 'notificationManager', {\n        value: notificationManagerInstance,\n        writable: false, // Prevent modification\n        configurable: false // Prevent deletion or redefinition\n    })\n\n    this.forms = new Map()\n} as any as IFormularManager\n\nObject.assign(FormularManager.prototype, {\n    clear,\n    createFromDescriptors,\n    createFromSchema,\n    createEmpty,\n    getData,\n    getForm,\n    validate\n})\n","import { SNotificationManager } from '@core/managers/notification-manager/notification-manager.types'\nimport {\n    IServiceManager,\n    SServiceManager\n} from '@core/managers/service-manager/service-manager.types'\nimport { FormularManager } from '../formular-manager'\nimport { SFormularManager } from '../formular-manager.types'\n\nexport const setupFormularManager = function (sm: IServiceManager) {\n    if (!sm) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n\n    sm.registerClass(SFormularManager, FormularManager, {\n        lifetime: 'singleton',\n        dependencies: [SServiceManager, SNotificationManager]\n    })\n}\n","/**\n * FORMULAR - Service Manager Factory\n * Copyright (c) 2025 Piana Tadeo\n * Licensed under MIT License\n *\n * Factory implementation for creating configurable service manager instances\n */\n\nimport { ServiceManager } from '../service-manager'\nimport { IServiceManager } from '../service-manager.types'\nimport { IServiceManagerFactory } from './i-service-manager-factory'\nimport { IServiceManagerSetupOptions } from './i-service-manager-setup-options'\n\n// Import setup functions\nimport { setupBaseInputClasses } from '../../../../setup/core/setup-base-input-classes'\nimport { setupBaseFieldsConfiguration } from '../../../../setup/core/setup-base-input-configurations'\nimport { setupManagers } from '../../../../setup/core/setup-managers'\nimport { setupInputsFactory } from '../../../factories/setup/setup-input-factory'\nimport { setupInputsRegistry } from '../../../factories/setup/setup-input-registry'\nimport { setupFormularManager } from '../../formular-manager/service/setup-formular-manager'\n\n/**\n * Concrete implementation of the service manager factory.\n * Creates service manager instances with configurable feature sets.\n */\nexport const ServiceManagerFactory: IServiceManagerFactory = {\n    /**\n     * Creates a new service manager instance with specified features\n     */\n    create(options: IServiceManagerSetupOptions = {}): IServiceManager {\n        // Handle null/undefined options safely\n        const safeOptions = options || {}\n        const {\n            includeCoreManagers = true,\n            includeFormularManager = true,\n            includeInputEngine = true,\n            includeBaseConfigurations = true,\n            customSetup = [],\n            parent,\n            skipValidation = false\n        } = safeOptions\n\n        const serviceManager = new ServiceManager(parent)\n\n        // Setup core features based on options\n        if (includeCoreManagers) {\n            setupManagers(serviceManager)\n        }\n\n        if (includeFormularManager) {\n            setupFormularManager(serviceManager)\n        }\n\n        if (includeInputEngine) {\n            setupBaseInputClasses(serviceManager)\n            setupInputsRegistry(serviceManager)\n            setupInputsFactory(serviceManager)\n        }\n\n        if (includeBaseConfigurations) {\n            setupBaseFieldsConfiguration(serviceManager)\n        }\n\n        // Apply custom setup functions\n        customSetup.forEach((setup) => setup(serviceManager))\n\n        // Validate in development (unless skipped)\n        if (process.env.NODE_ENV === 'development' && !skipValidation) {\n            try {\n                serviceManager.validateNoCycles()\n                console.log('🔍 Service Manager Factory: Dependency validation passed')\n            } catch (error: any) {\n                console.error(\n                    '🚨 Service Manager Factory: Circular dependency detected:',\n                    error.message\n                )\n                throw error\n            }\n        }\n\n        return serviceManager\n    },\n\n    /**\n     * Creates a minimal service manager (just the container)\n     */\n    createMinimal(parent?: IServiceManager): IServiceManager {\n        return new ServiceManager(parent)\n    },\n\n    /**\n     * Creates a fully configured service manager with all features\n     */\n    createFull(parent?: IServiceManager): IServiceManager {\n        return this.create({\n            includeCoreManagers: true,\n            includeFormularManager: true,\n            includeInputEngine: true,\n            includeBaseConfigurations: true,\n            parent\n        })\n    },\n\n    /**\n     * Creates a scoped service manager from an existing one\n     */\n    createScope(parent: IServiceManager): IServiceManager {\n        return parent.createScope()\n    }\n}\n","/**\n * FORMULAR - Setup Helpers for Common Scenarios\n * Copyright (c) 2025 Piana Tadeo\n * Licensed under MIT License\n *\n * Helper functions for common service manager setup scenarios\n */\n\nimport { IServiceManagerSetupOptions } from '../../core/managers/service-manager/factory/i-service-manager-setup-options'\nimport { ServiceManagerFactory } from '../../core/managers/service-manager/factory/service-manager-factory'\nimport { IServiceManager } from '../../core/managers/service-manager/service-manager.types'\n\n/**\n * Helper functions for common setup scenarios.\n * Provides convenient methods for creating service managers with predefined configurations.\n */\nexport const SetupHelpers = {\n    /**\n     * Creates a service manager for form applications with all features enabled.\n     * This is the most common setup for applications using FORMULAR.\n     *\n     * @param options - Optional additional configuration options\n     * @returns A fully configured service manager for form applications\n     */\n    forFormApplication(options?: Partial<IServiceManagerSetupOptions>): IServiceManager {\n        return ServiceManagerFactory.create({\n            includeCoreManagers: true,\n            includeFormularManager: true,\n            includeInputEngine: true,\n            includeBaseConfigurations: true,\n            ...options\n        })\n    },\n\n    /**\n     * Creates a minimal service manager for custom implementations.\n     * Only includes core managers, allowing consumers to build their own setup.\n     *\n     * @param options - Optional additional configuration options\n     * @returns A minimal service manager with only core features\n     */\n    forCustomImplementation(options?: Partial<IServiceManagerSetupOptions>): IServiceManager {\n        return ServiceManagerFactory.create({\n            includeCoreManagers: true,\n            includeFormularManager: false,\n            includeInputEngine: false,\n            includeBaseConfigurations: false,\n            ...options\n        })\n    },\n\n    /**\n     * Creates a service manager optimized for testing environments.\n     * Includes all features but may have different validation settings.\n     *\n     * @param options - Optional additional configuration options\n     * @returns A service manager configured for testing\n     */\n    forTesting(options?: Partial<IServiceManagerSetupOptions>): IServiceManager {\n        return ServiceManagerFactory.create({\n            includeCoreManagers: true,\n            includeFormularManager: true,\n            includeInputEngine: true,\n            includeBaseConfigurations: true,\n            skipValidation: false, // Keep validation in tests to catch issues\n            ...options\n        })\n    },\n\n    /**\n     * Creates a service manager with only core managers.\n     * Useful for lightweight applications or when building custom solutions.\n     *\n     * @param options - Optional additional configuration options\n     * @returns A service manager with only core managers\n     */\n    coreOnly(options?: Partial<IServiceManagerSetupOptions>): IServiceManager {\n        return ServiceManagerFactory.create({\n            includeCoreManagers: true,\n            includeFormularManager: false,\n            includeInputEngine: false,\n            includeBaseConfigurations: false,\n            ...options\n        })\n    },\n\n    /**\n     * Creates a service manager for input-focused applications.\n     * Includes core managers and input engine but excludes formular manager.\n     *\n     * @param options - Optional additional configuration options\n     * @returns A service manager optimized for input handling\n     */\n    forInputEngine(options?: Partial<IServiceManagerSetupOptions>): IServiceManager {\n        return ServiceManagerFactory.create({\n            includeCoreManagers: true,\n            includeFormularManager: false,\n            includeInputEngine: true,\n            includeBaseConfigurations: true,\n            ...options\n        })\n    },\n\n    /**\n     * Creates a service manager for configuration-only scenarios.\n     * Includes core managers and configurations but excludes complex features.\n     *\n     * @param options - Optional additional configuration options\n     * @returns A service manager for configuration-focused applications\n     */\n    forConfiguration(options?: Partial<IServiceManagerSetupOptions>): IServiceManager {\n        return ServiceManagerFactory.create({\n            includeCoreManagers: true,\n            includeFormularManager: false,\n            includeInputEngine: false,\n            includeBaseConfigurations: true,\n            ...options\n        })\n    }\n}\n","/**\n * Form submission strategy pattern\n * Allows different submission behaviors for different contexts\n */\n\nimport type { IFormular } from './core/formular-engine/formular-base/formular-base.types'\n\n/**\n * Form submission strategy interface\n */\nexport interface IFormSubmissionStrategy<T extends object> {\n    /**\n     * Submit form data\n     * @param data - Validated form data\n     * @param form - Form instance\n     * @returns Promise resolving to submission result\n     */\n    submit(data: T, form: IFormular<T>): Promise<unknown>\n}\n\n/**\n * Direct submission strategy\n * Submits data immediately without additional checks\n */\nexport const DirectSubmissionStrategy = function <T extends object>(\n    this: IDirectSubmissionStrategyImpl<T>,\n    submitFn: (data: T) => Promise<unknown>\n): void {\n    this._submitFn = submitFn\n} as unknown as {\n    new <T extends object>(\n        submitFn: (data: T) => Promise<unknown>\n    ): IDirectSubmissionStrategyImpl<T>\n    prototype: IFormSubmissionStrategy<any>\n}\n\ninterface IDirectSubmissionStrategyImpl<T extends object> extends IFormSubmissionStrategy<T> {\n    _submitFn: (data: T) => Promise<unknown>\n}\n\nDirectSubmissionStrategy.prototype.submit = async function <T extends object>(\n    this: IDirectSubmissionStrategyImpl<T>,\n    data: T,\n    form: IFormular<T>\n): Promise<unknown> {\n    return this._submitFn(data)\n}\n\n/**\n * Context-aware submission strategy\n * Used with FormProvider/FormContext in pulsar-formular-ui\n * Ensures validation is complete and checks for user dismissal\n */\nexport const ContextSubmissionStrategy = function <T extends object>(\n    this: IContextSubmissionStrategyImpl<T>,\n    submitFn: (data: T) => Promise<unknown>,\n    contextChecks?: {\n        isDismissed?: () => boolean\n        onValidationStart?: () => void\n        onValidationComplete?: (isValid: boolean) => void\n    }\n): void {\n    this._submitFn = submitFn\n    this._contextChecks = contextChecks ?? {}\n} as unknown as {\n    new <T extends object>(\n        submitFn: (data: T) => Promise<unknown>,\n        contextChecks?: {\n            isDismissed?: () => boolean\n            onValidationStart?: () => void\n            onValidationComplete?: (isValid: boolean) => void\n        }\n    ): IContextSubmissionStrategyImpl<T>\n    prototype: IFormSubmissionStrategy<any>\n}\n\ninterface IContextSubmissionStrategyImpl<T extends object> extends IFormSubmissionStrategy<T> {\n    _submitFn: (data: T) => Promise<unknown>\n    _contextChecks: {\n        isDismissed?: () => boolean\n        onValidationStart?: () => void\n        onValidationComplete?: (isValid: boolean) => void\n    }\n}\n\nContextSubmissionStrategy.prototype.submit = async function <T extends object>(\n    this: IContextSubmissionStrategyImpl<T>,\n    data: T,\n    form: IFormular<T>\n): Promise<unknown> {\n    // Notify validation start\n    if (this._contextChecks.onValidationStart) {\n        this._contextChecks.onValidationStart()\n    }\n\n    // Wait for all validations to complete\n    const isValid = await form.validateForm()\n\n    // Notify validation complete\n    if (this._contextChecks.onValidationComplete) {\n        this._contextChecks.onValidationComplete(isValid)\n    }\n\n    // Check if form is valid\n    if (!isValid) {\n        throw new Error('Form validation failed')\n    }\n\n    // Check if user dismissed\n    if (this._contextChecks.isDismissed && this._contextChecks.isDismissed()) {\n        throw new Error('Form submission dismissed by user')\n    }\n\n    // Submit through strategy\n    return this._submitFn(data)\n}\n\n/**\n * Form submission error\n */\nexport class FormSubmissionError extends Error {\n    constructor(\n        message: string,\n        public readonly code: string\n    ) {\n        super(message)\n        this.name = 'FormSubmissionError'\n    }\n}\n\n/**\n * Form dismissed error\n */\nexport class FormDismissedError extends FormSubmissionError {\n    constructor() {\n        super('Form submission was dismissed by the user', 'FORM_DISMISSED')\n        this.name = 'FormDismissedError'\n    }\n}\n","/**\n * Simple form creation API\n * Clean, type-safe form creation without IoC ceremony\n */\n\nimport type { IFormular } from './core/formular-engine/formular-base/formular-base.types'\nimport type { InputTypeNames } from './core/framework/common/common.input.types'\nimport type { IFieldDescriptor } from './core/framework/schema/descriptor/field.descriptor'\nimport type { IFormularManager } from './core/managers/formular-manager/formular-manager.types'\nimport { SFormularManager } from './core/managers/formular-manager/formular-manager.types'\nimport { presetRegistry } from './schema/presets'\nimport type { IInferShape, IObjectSchema, IObjectShape } from './schema/types'\nimport { SetupHelpers } from './setup/core/setup-helpers'\nimport type { IFormSubmissionStrategy } from './submission-strategy'\nimport { DirectSubmissionStrategy } from './submission-strategy'\n\n/**\n * Form configuration\n */\nexport interface IFormConfig<T extends IObjectShape> {\n    /**\n     * Form schema (required)\n     */\n    readonly schema: IObjectSchema<T>\n\n    /**\n     * Form ID (optional, auto-generated if not provided)\n     */\n    readonly id?: string\n\n    /**\n     * Default values (optional)\n     */\n    readonly defaultValues?: Partial<IInferShape<T>>\n\n    /**\n     * Submission handler (optional)\n     */\n    readonly onSubmit?: (data: IInferShape<T>) => void | Promise<void>\n\n    /**\n     * Success handler (optional)\n     */\n    readonly onSuccess?: (response: unknown, data: IInferShape<T>) => void\n\n    /**\n     * Error handler (optional)\n     */\n    readonly onError?: (error: Error) => void\n\n    /**\n     * Submission strategy (optional, defaults to direct)\n     */\n    readonly submissionStrategy?: IFormSubmissionStrategy<IInferShape<T>>\n}\n\nfunction inferInputType(fieldSchema: unknown): InputTypeNames {\n    const fs = fieldSchema as any\n    if (!fs) return 'text'\n    \n    if (fs._type === 'number' || typeof fs.int === 'function' || typeof fs.finite === 'function') return 'number'\n    if (fs._type === 'boolean' || typeof fs.true === 'function' || typeof fs.false === 'function') return 'checkbox'\n    if (fs._type === 'date') return 'date'\n    \n    // For date, since it only has min/max like number/string, if it lacks string/number specific methods, it's a date\n    if (typeof fs.toLowerCase !== 'function' && typeof fs.int !== 'function' && typeof fs.true !== 'function' && typeof fs.min === 'function') {\n        // Only String, Number, Date have min(). String has toLowerCase(), Number has int().\n        return 'date'\n    }\n    \n    return 'text'\n}\n\n/**\n * Extracts validation constraints from schema objects and normalizes them for the field engine.\n */\nfunction extractValidationOptions(fieldSchema: unknown, key: string | number | symbol): Record<string, unknown> {\n    const fs = fieldSchema as any\n    const validationOptions: Record<string, unknown> = {}\n    if (!fs) return validationOptions\n\n    const err = (msg: string) => ({ message: msg, code: 'schema', name: String(key) })\n    \n    if (fs._required) {\n        validationOptions['required'] = { value: fs._required.value, error: err(fs._required.message) }\n    }\n    if (fs._min) {\n        validationOptions['minLength'] = { value: fs._min.value, error: err(fs._min.message) }\n    }\n    if (fs._max) {\n        validationOptions['maxLength'] = { value: fs._max.value, error: err(fs._max.message) }\n    }\n    if (fs._email) {\n        validationOptions['pattern'] = { value: fs._email.value, error: err(fs._email.message) }\n    }\n\n    return validationOptions\n}\n\n/**\n * Schema to field descriptor converter\n */\nfunction schemaToDescriptors<T extends IObjectShape>(\n    schema: IObjectSchema<T>,\n    defaultValues?: Partial<IInferShape<T>>\n): IFieldDescriptor[] {\n    const descriptors: IFieldDescriptor[] = []\n    let id = 1\n\n    for (const key in schema.shape) {\n        if (Object.prototype.hasOwnProperty.call(schema.shape, key)) {\n            const fieldSchema = schema.shape[key]\n            const defaultValue = defaultValues?.[key as keyof typeof defaultValues]\n\n            const inputType = inferInputType(fieldSchema)\n            const validationOptions = extractValidationOptions(fieldSchema, key)\n            const debounceDelay = (fieldSchema as any)._debounce\n\n            descriptors.push({\n                id,\n                name: key,\n                label: key.charAt(0).toUpperCase() + key.slice(1),\n                type: inputType,\n                value: defaultValue ?? '',\n                objectValue: null,\n                defaultValue: defaultValue ?? '',\n                errors: [],\n                guides: [],\n                validationOptions,\n                options: [],\n                isValid: false,\n                isDirty: false,\n                isPristine: true,\n                isFocus: false,\n                shouldValidate: true,\n                debounceDelay\n            })\n\n            id++\n        }\n    }\n\n    return descriptors\n}\n\n/**\n * Create a form from schema\n *\n * @example\n * ```typescript\n * import { createForm, f } from 'formular.dev'\n *\n * const userSchema = f.object({\n *   email: f.string().email().nonempty(),\n *   age: f.number().min(18).max(100)\n * })\n *\n * const form = createForm({\n *   schema: userSchema,\n *   onSubmit: async (data) => {\n *     await api.post('/users', data)\n *   }\n * })\n * ```\n */\nexport async function createForm<T extends IObjectShape>(\n    config: IFormConfig<T>\n): Promise<IFormular<IInferShape<T>>> {\n    // Create service manager (hidden from user)\n    const serviceManager = SetupHelpers.forFormApplication()\n    const formularManager = serviceManager.resolve<IFormularManager>(SFormularManager)\n\n    if (!formularManager) {\n        throw new Error('Failed to initialize form manager')\n    }\n\n    // Generate form ID\n    const formId = config.id ?? `form-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n\n    // Convert schema to descriptors\n    const descriptors = schemaToDescriptors(config.schema, config.defaultValues)\n\n    // Create form\n    const form = await formularManager.createFromDescriptors<IInferShape<T>>(formId, descriptors)\n\n    if (!form) {\n        throw new Error('Failed to create form')\n    }\n\n    // Add explicit cleanup method to ensure proper DI container disposal\n    ;(form as any).destroy = (): void => {\n        console.log(`[FORMULAR] Destroying form ${formId} and cleaning up ServiceManager`)\n        try {\n            // Dispose the entire service manager and its dependencies\n            serviceManager.dispose?.()\n        } catch (error) {\n            console.warn(`[FORMULAR] Error during form cleanup:`, error)\n        }\n    }\n\n    // Setup submission strategy\n    if (config.onSubmit) {\n        const wrappedSubmit = async (data: IInferShape<T>): Promise<unknown> => {\n            await config.onSubmit!(data)\n            return undefined\n        }\n        const strategy = config.submissionStrategy ?? new DirectSubmissionStrategy(wrappedSubmit)\n\n        // Override submit method\n        const originalSubmit = form.submit.bind(form)\n        form.submit = async (): Promise<IInferShape<T> | null> => {\n            try {\n                // Validate first\n                const result = await originalSubmit()\n                if (!result) {\n                    return null\n                }\n\n                // Submit through strategy\n                const response = await strategy.submit(result, form as IFormular<IInferShape<T>>)\n\n                // Call success handler\n                if (config.onSuccess) {\n                    config.onSuccess(response, result)\n                }\n\n                return result\n            } catch (error) {\n                // Call error handler\n                if (config.onError) {\n                    config.onError(error as Error)\n                }\n                throw error\n            }\n        }\n    }\n\n    return form\n}\n\n/**\n * Create a form from preset\n *\n * @example\n * ```typescript\n * import { createFormFromPreset } from 'formular.dev'\n *\n * const loginForm = createFormFromPreset('login', {\n *   onSubmit: async (data) => {\n *     await api.login(data)\n *   }\n * })\n * ```\n */\nexport async function createFormFromPreset<T extends IObjectShape>(\n    presetName: string,\n    config?: Omit<IFormConfig<T>, 'schema'>\n): Promise<IFormular<IInferShape<T>>> {\n    const preset = presetRegistry.get(presetName)\n\n    if (!preset) {\n        throw new Error(`Preset \"${presetName}\" not found`)\n    }\n\n    return createForm({\n        ...config,\n        schema: preset.schema\n    } as IFormConfig<T>)\n}\n","import { DomManager } from './dom-manager'\nimport { IDomManager } from './dom-manager.types'\n\n/**\n * Creates a mock DomManager instance for testing purposes.\n *\n * @template T - The type of HTMLElement managed.\n * @param {Partial<IDomManager<T>>} overrides - Optional overrides for the manager's methods or properties.\n * @returns {IDomManager<T>} A mock DomManager instance.\n */\nexport function createMockDomManager<T extends HTMLElement>(\n    overrides: Partial<IDomManager<T>> = {},\n    initConfig?: any\n): IDomManager<T> {\n    // Properly create a prototype-based instance and call the constructor\n    const manager = Object.create(DomManager.prototype) as IDomManager<T>\n\n    DomManager.call(manager)\n    if (typeof manager.initialize === 'function') {\n        manager.initialize(initConfig)\n    }\n    // Optionally override any methods or properties\n    Object.assign(manager, overrides)\n    return manager\n}\n","import type { IInputConfiguration } from '@setup/providers/interfaces/i-input-configuration'\nimport type { IInitializationManager } from './initialization-manager.types'\n\n/**\n * Mock builder for InitializationManager for testing purposes.\n */\nexport function createInitializationManagerMock(\n    overrides: Partial<IInitializationManager> = {}\n): Partial<IInitializationManager> {\n    const defaultConfig: IInputConfiguration = {\n        validationStrategies: [],\n        trackingStrategies: [],\n        valueStrategies: [],\n        triggerKeyWordType: []\n    }\n    const mock: Partial<IInitializationManager> = {\n        params: defaultConfig,\n        initializer: undefined,\n        addInitializer: jest.fn(),\n        executeSequences: jest.fn(),\n        ...overrides\n    }\n    return mock\n}\n","import { IServiceLocator } from '../service-locator/service-locator'\nimport { IServiceManager } from '../service-manager.types'\n\nexport interface IAbstractServiceBase {\n    new (serviceManager: IServiceManager): IAbstractServiceBase\n    serviceLocator: IServiceLocator\n    serviceManager: IServiceManager\n}\n\nexport const AbstractServiceBase = function (\n    this: IAbstractServiceBase,\n    serviceManager: IServiceManager\n) {\n    if (!serviceManager) {\n        throw new Error(\n            'ServiceManager is not provided. Please provide a valid ServiceManager instance.'\n        )\n    }\n\n    Object.defineProperties(this, {\n        serviceManager: {\n            get: function () {\n                return serviceManager\n            },\n            enumerable: true,\n            configurable: false\n        },\n        serviceLocator: {\n            get: function () {\n                return serviceManager\n            },\n            enumerable: true,\n            configurable: false\n        }\n    })\n}\n","import { IServiceManager, ServiceIdType } from '../service-manager.types'\n\nexport interface IServiceLocator {\n    get<T>(identifier: ServiceIdType<T>): T\n    tryGet<T>(identifier: ServiceIdType<T>): T | undefined\n    lazy<T>(identifier: ServiceIdType<T>): () => T\n}\n\nexport const ServiceLocator = function (this: IServiceLocator, sm: IServiceManager) {\n    const cache = new Map<ServiceIdType, any>()\n\n    this.get = function <T>(this: IServiceLocator, identifier: ServiceIdType<T>): T {\n        if (cache.has(identifier)) {\n            return cache.get(identifier) as T\n        }\n        const service = sm.resolve<T>(identifier)\n        cache.set(identifier, service)\n        return service\n    }\n\n    this.tryGet = function <T>(this: IServiceLocator, identifier: ServiceIdType<T>): T | undefined {\n        try {\n            return this.get<T>(identifier)\n        } catch {\n            return undefined\n        }\n    }\n\n    this.lazy = function <T>(this: IServiceLocator, identifier: ServiceIdType<T>): () => T {\n        let resolved = false\n        let service: T\n        return () => {\n            if (!resolved) {\n                service = this.get<T>(identifier)\n                resolved = true\n            }\n            return service\n        }\n    }\n} as any as IServiceLocator\n","export enum ValidationConstraintTypeEnum {\n    required = 'required',\n    min = 'min',\n    max = 'max',\n    minLength = 'minLength',\n    maxLength = 'maxLength',\n    pattern = 'pattern',\n    custom = 'custom'\n}\n","import { IValidationConstraintBuilder } from './interfaces/i-validation-constraint-builder'\nimport { ValidationConstraintType } from './types/validation-constraint.type'\nimport { ValidationConstraintBuilder } from './validation-constraint-builder'\n\n/**\n * Configuration for a validation constraint\n */\nexport interface ValidationConstraintConfig<T = any> {\n    type: ValidationConstraintType\n    value: T\n    name?: string\n    errorMessage?: string | null\n    guideMessage?: string | null\n}\n\n/**\n * Type-safe validation configuration for common field types\n */\nexport interface ValidationConfig {\n    required?: boolean | ValidationConstraintConfig<boolean>\n    min?: number | ValidationConstraintConfig<number>\n    max?: number | ValidationConstraintConfig<number>\n    minLength?: number | ValidationConstraintConfig<number>\n    maxLength?: number | ValidationConstraintConfig<number>\n    pattern?: RegExp | ValidationConstraintConfig<RegExp>\n    custom?: ValidationConstraintConfig<any>\n}\n\n/**\n * Factory class for creating validation constraints\n * Provides a fluent interface for building multiple validation constraints\n */\nexport class ValidationConstraintFactory {\n    private constraints: IValidationConstraintBuilder<any>[] = []\n\n    /**\n     * Add a required validation constraint\n     */\n    required(\n        value: boolean = true,\n        errorMessage?: string,\n        guideMessage?: string,\n        name?: string\n    ): this {\n        this.constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(value)\n                .setName(name || 'required')\n                .setErrorMessage(errorMessage || null)\n                .setGuideMessage(guideMessage || null)\n        )\n        return this\n    }\n\n    /**\n     * Add a min value validation constraint\n     */\n    min(value: number, errorMessage?: string, guideMessage?: string, name?: string): this {\n        this.constraints.push(\n            new ValidationConstraintBuilder<number>('min')\n                .setConstraint(value)\n                .setName(name || 'min')\n                .setErrorMessage(errorMessage || null)\n                .setGuideMessage(guideMessage || null)\n        )\n        return this\n    }\n\n    /**\n     * Add a max value validation constraint\n     */\n    max(value: number, errorMessage?: string, guideMessage?: string, name?: string): this {\n        this.constraints.push(\n            new ValidationConstraintBuilder<number>('max')\n                .setConstraint(value)\n                .setName(name || 'max')\n                .setErrorMessage(errorMessage || null)\n                .setGuideMessage(guideMessage || null)\n        )\n        return this\n    }\n\n    /**\n     * Add a minLength validation constraint\n     */\n    minLength(value: number, errorMessage?: string, guideMessage?: string, name?: string): this {\n        this.constraints.push(\n            new ValidationConstraintBuilder<number>('minLength')\n                .setConstraint(value)\n                .setName(name || 'minLength')\n                .setErrorMessage(errorMessage || null)\n                .setGuideMessage(guideMessage || null)\n        )\n        return this\n    }\n\n    /**\n     * Add a maxLength validation constraint\n     */\n    maxLength(value: number, errorMessage?: string, guideMessage?: string, name?: string): this {\n        this.constraints.push(\n            new ValidationConstraintBuilder<number>('maxLength')\n                .setConstraint(value)\n                .setName(name || 'maxLength')\n                .setErrorMessage(errorMessage || null)\n                .setGuideMessage(guideMessage || null)\n        )\n        return this\n    }\n\n    /**\n     * Add a pattern validation constraint\n     */\n    pattern(value: RegExp, errorMessage?: string, guideMessage?: string, name?: string): this {\n        this.constraints.push(\n            new ValidationConstraintBuilder<RegExp>('pattern')\n                .setConstraint(value)\n                .setName(name || 'pattern')\n                .setErrorMessage(errorMessage || null)\n                .setGuideMessage(guideMessage || null)\n        )\n        return this\n    }\n\n    /**\n     * Add a custom validation constraint\n     */\n    custom<T>(value: T, errorMessage?: string, guideMessage?: string, name?: string): this {\n        this.constraints.push(\n            new ValidationConstraintBuilder<T>('custom')\n                .setConstraint(value)\n                .setName(name || 'custom')\n                .setErrorMessage(errorMessage || null)\n                .setGuideMessage(guideMessage || null)\n        )\n        return this\n    }\n\n    /**\n     * Add a raw constraint builder\n     */\n    addConstraint(constraint: IValidationConstraintBuilder<any>): this {\n        this.constraints.push(constraint)\n        return this\n    }\n\n    /**\n     * Build all constraints\n     */\n    build<T = any>(): T[] {\n        return this.constraints.map((c) => c.build<T>())\n    }\n\n    /**\n     * Get the raw constraint builders\n     */\n    getConstraints(): IValidationConstraintBuilder<any>[] {\n        return this.constraints\n    }\n\n    /**\n     * Reset the factory\n     */\n    reset(): this {\n        this.constraints = []\n        return this\n    }\n}\n\n/**\n * Functional helper to create validation constraints from a configuration object\n *\n * @example\n * ```typescript\n * const constraints = createValidationConstraints({\n *   required: true,\n *   minLength: 3,\n *   maxLength: 50,\n *   pattern: /^[a-zA-Z0-9]+$/\n * }, 'username');\n * ```\n */\nexport function createValidationConstraints(\n    config: ValidationConfig,\n    fieldName?: string\n): IValidationConstraintBuilder<any>[] {\n    const factory = new ValidationConstraintFactory()\n\n    // Handle required\n    if (config.required !== undefined) {\n        if (typeof config.required === 'boolean') {\n            factory.required(config.required, undefined, undefined, fieldName)\n        } else {\n            factory.required(\n                config.required.value,\n                config.required.errorMessage || undefined,\n                config.required.guideMessage || undefined,\n                config.required.name || fieldName\n            )\n        }\n    }\n\n    // Handle min\n    if (config.min !== undefined) {\n        if (typeof config.min === 'number') {\n            factory.min(config.min, undefined, undefined, fieldName)\n        } else {\n            factory.min(\n                config.min.value,\n                config.min.errorMessage || undefined,\n                config.min.guideMessage || undefined,\n                config.min.name || fieldName\n            )\n        }\n    }\n\n    // Handle max\n    if (config.max !== undefined) {\n        if (typeof config.max === 'number') {\n            factory.max(config.max, undefined, undefined, fieldName)\n        } else {\n            factory.max(\n                config.max.value,\n                config.max.errorMessage || undefined,\n                config.max.guideMessage || undefined,\n                config.max.name || fieldName\n            )\n        }\n    }\n\n    // Handle minLength\n    if (config.minLength !== undefined) {\n        if (typeof config.minLength === 'number') {\n            factory.minLength(config.minLength, undefined, undefined, fieldName)\n        } else {\n            factory.minLength(\n                config.minLength.value,\n                config.minLength.errorMessage || undefined,\n                config.minLength.guideMessage || undefined,\n                config.minLength.name || fieldName\n            )\n        }\n    }\n\n    // Handle maxLength\n    if (config.maxLength !== undefined) {\n        if (typeof config.maxLength === 'number') {\n            factory.maxLength(config.maxLength, undefined, undefined, fieldName)\n        } else {\n            factory.maxLength(\n                config.maxLength.value,\n                config.maxLength.errorMessage || undefined,\n                config.maxLength.guideMessage || undefined,\n                config.maxLength.name || fieldName\n            )\n        }\n    }\n\n    // Handle pattern\n    if (config.pattern !== undefined) {\n        if (config.pattern instanceof RegExp) {\n            factory.pattern(config.pattern, undefined, undefined, fieldName)\n        } else {\n            factory.pattern(\n                config.pattern.value,\n                config.pattern.errorMessage || undefined,\n                config.pattern.guideMessage || undefined,\n                config.pattern.name || fieldName\n            )\n        }\n    }\n\n    // Handle custom\n    if (config.custom !== undefined) {\n        factory.custom(\n            config.custom.value,\n            config.custom.errorMessage || undefined,\n            config.custom.guideMessage || undefined,\n            config.custom.name || fieldName\n        )\n    }\n\n    return factory.getConstraints()\n}\n\n/**\n * Common validation preset configurations\n */\nexport const ValidationPresets = {\n    /**\n     * Email validation preset\n     */\n    email: (required: boolean = true): ValidationConfig => ({\n        ...(required && { required: true }),\n        pattern: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/,\n        maxLength: 150\n    }),\n\n    /**\n     * Password validation preset\n     */\n    password: (required: boolean = true): ValidationConfig => ({\n        ...(required && { required: true }),\n        minLength: 8,\n        maxLength: 128,\n        pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]/\n    }),\n\n    /**\n     * Username validation preset\n     */\n    username: (required: boolean = true): ValidationConfig => ({\n        ...(required && { required: true }),\n        minLength: 3,\n        maxLength: 50,\n        pattern: /^[a-zA-Z0-9_-]+$/\n    }),\n\n    /**\n     * Phone validation preset\n     */\n    phone: (required: boolean = true): ValidationConfig => ({\n        ...(required && { required: true }),\n        pattern: /^[\\d\\s\\-+()]+$/,\n        minLength: 10,\n        maxLength: 20\n    }),\n\n    /**\n     * URL validation preset\n     */\n    url: (required: boolean = true): ValidationConfig => ({\n        ...(required && { required: true }),\n        pattern: /^https?:\\/\\/.+/,\n        maxLength: 2048\n    }),\n\n    /**\n     * Numeric range validation preset\n     */\n    numericRange: (min: number, max: number, required: boolean = true): ValidationConfig => ({\n        ...(required && { required: true }),\n        min,\n        max\n    }),\n\n    /**\n     * Text length validation preset\n     */\n    textLength: (\n        minLength: number,\n        maxLength: number,\n        required: boolean = true\n    ): ValidationConfig => ({\n        ...(required && { required: true }),\n        minLength,\n        maxLength\n    })\n}\n","import { ValidationConstraintTypeEnum } from './enums/validation-constraint-type.enum'\nimport { IValidationConstraintBuilder } from './interfaces/i-validation-constraint-builder'\nimport { ValidationConstraintType } from './types/validation-constraint.type'\n\n// Re-export for backward compatibility\nexport { ValidationConstraintTypeEnum }\nexport type { IValidationConstraintBuilder, ValidationConstraintType }\n\n// Re-export factory and helpers\nexport {\n    createValidationConstraints,\n    ValidationConstraintFactory,\n    ValidationPresets\n} from './validation-constraint-factory'\nexport type { ValidationConfig, ValidationConstraintConfig } from './validation-constraint-factory'\n\nexport const ValidationConstraintBuilder = function <T>(\n    this: IValidationConstraintBuilder<T>,\n    type: ValidationConstraintType\n) {\n    this.type = type\n    this.errorMessage = null\n    this.guideMessage = null\n\n    this.setConstraint = function (constraint: T): IValidationConstraintBuilder<T> {\n        this.constraint = constraint\n        return this\n    }\n\n    this.setName = function (name: string): IValidationConstraintBuilder<T> {\n        this.name = name\n        return this\n    }\n\n    this.setErrorMessage = function (\n        this: IValidationConstraintBuilder<T>,\n        errorMessage: string | null\n    ): IValidationConstraintBuilder<T> {\n        this.errorMessage = errorMessage\n        return this\n    }\n\n    this.setGuideMessage = function (\n        this: IValidationConstraintBuilder<T>,\n        guideMessage: string | null\n    ): IValidationConstraintBuilder<T> {\n        this.guideMessage = guideMessage\n        return this\n    }\n\n    this.build = function <TOut>(): TOut {\n        return {\n            type: this.type,\n            value: this.constraint,\n            error: {\n                message: this.errorMessage,\n                code: this.type,\n                name: this.name ?? this.type\n            },\n            guide: {\n                message: this.guideMessage,\n                code: this.type,\n                name: this.name ?? this.type\n            }\n        } as unknown as TOut\n    }\n\n    this.clone = function <TOut>(this: IValidationConstraintBuilder<T>): TOut {\n        const cloneInstance = new ValidationConstraintBuilder(this.type)\n        cloneInstance.type = this.type\n        cloneInstance.constraint = this.constraint\n        cloneInstance.errorMessage = this.errorMessage\n        cloneInstance.guideMessage = this.guideMessage\n        return cloneInstance as TOut\n    }\n} as any as IValidationConstraintBuilder<any>\n","import { IValidationConstraintBuilder } from '../constraint-builder/validation-constraint-builder'\nimport { IValidationOptions } from '../validation-manager.types'\n\nexport interface IGenericValidationBuilder {\n    addConstraint(arg0: any): unknown\n    new (): IGenericValidationBuilder\n    constraints: IValidationConstraintBuilder<any>[]\n    setConstraints: <T>(constraints: IValidationConstraintBuilder<T>[]) => IGenericValidationBuilder\n    build: () => IValidationOptions\n    clone: () => IGenericValidationBuilder\n}\n\nexport const GenericValidationBuilder = function (\n    this: IGenericValidationBuilder\n): IGenericValidationBuilder {\n    this.constraints = []\n\n    this.setConstraints = function <T>(\n        this: IGenericValidationBuilder,\n        constraints: IValidationConstraintBuilder<T>[]\n    ): IGenericValidationBuilder {\n        this.constraints = constraints\n        return this\n    }\n\n    this.build = function (this: IGenericValidationBuilder): IValidationOptions {\n        if (this.constraints.length === 0) {\n            return {}\n        }\n        // Map each constraint to its built representation\n        // and return as IValidationOptions\n\n        const maxContainer = this.constraints.find((c) => c.type === 'max')?.build() ?? undefined\n        const minContainer = this.constraints.find((c) => c.type === 'min')?.build() ?? undefined\n        const minLengthContainer =\n            this.constraints.find((c) => c.type === 'minLength')?.build() ?? undefined\n        const maxLengthContainer =\n            this.constraints.find((c) => c.type === 'maxLength')?.build() ?? undefined\n        const patternContainer =\n            this.constraints.find((c) => c.type === 'pattern')?.build() ?? undefined\n        const customContainer =\n            this.constraints.find((c) => c.type === 'custom')?.build() ?? undefined\n        const requiredContainer =\n            this.constraints.find((c) => c.type === 'required')?.build() ?? undefined\n\n        const output: IValidationOptions = {\n            max: maxContainer ? { ...maxContainer } : undefined,\n            min: minContainer ? { ...minContainer } : undefined,\n            minLength: minLengthContainer ? { ...minLengthContainer } : undefined,\n            maxLength: maxLengthContainer ? { ...maxLengthContainer } : undefined,\n            pattern: patternContainer ? { ...patternContainer } : undefined,\n            custom: customContainer ? { ...customContainer } : undefined,\n            required: requiredContainer ? { ...requiredContainer } : undefined\n        } as IValidationOptions\n\n        return output\n    }\n\n    this.clone = function (this: IGenericValidationBuilder) {\n        const clone = new GenericValidationBuilder()\n        clone.setConstraints(this.constraints.map((c) => c.clone<any>()))\n        return clone\n    }\n\n    return this\n} as any as IGenericValidationBuilder\n","import { ValidationManager } from './validation-manager'\nimport { IValidationManager } from './validation-manager.types'\n\n/**\n * Creates a mock ValidationManager with optional overrides for testing.\n * @param overrides Partial properties or methods to override the default ValidationManager.\n */\nexport function createValidationManagerMock(\n    overrides: Partial<IValidationManager> = {}\n): IValidationManager {\n    const instance = new (ValidationManager as any)() as IValidationManager\n    return Object.assign(instance, overrides)\n}\n","export enum ValidationLocalizeKeys {\n    nameError = 'VALIDATION.NAME.ERROR',\n    nameGuide = 'VALIDATION.NAME.GUIDE',\n    emailError = 'VALIDATION.EMAIL.ERROR',\n    emailGuide = 'VALIDATION.EMAIL.GUIDE',\n    phoneError = 'VALIDATION.PHONE.ERROR',\n    phoneGuide = 'VALIDATION.PHONE.GUIDE',\n    passwordError = 'VALIDATION.PASSWORD.ERROR',\n    passwordGuide = 'VALIDATION.PASSWORD.GUIDE',\n    confirmPasswordError = 'VALIDATION.CONFIRM_PASSWORD.ERROR',\n    confirmPasswordGuide = 'VALIDATION.CONFIRM_PASSWORD.GUIDE',\n    dateError = 'VALIDATION.DATE.ERROR',\n    dateGuide = 'VALIDATION.DATE.GUIDE',\n    timeError = 'VALIDATION.TIME.ERROR',\n    timeGuide = 'VALIDATION.TIME.GUIDE',\n    dateTimeError = 'VALIDATION.DATE_TIME.ERROR',\n    dateTimeGuide = 'VALIDATION.DATE_TIME.GUIDE',\n    numberError = 'VALIDATION.NUMBER.ERROR',\n    numberGuide = 'VALIDATION.NUMBER.GUIDE',\n    integerError = 'VALIDATION.INTEGER.ERROR',\n    integerGuide = 'VALIDATION.INTEGER.GUIDE',\n    decimalError = 'VALIDATION.DECIMAL.ERROR',\n    decimalGuide = 'VALIDATION.DECIMAL.GUIDE',\n    urlError = 'VALIDATION.URL.ERROR',\n    urlGuide = 'VALIDATION.URL.GUIDE',\n    requiredError = 'VALIDATION.REQUIRED.ERROR',\n    requiredGuide = 'VALIDATION.REQUIRED.GUIDE',\n    minLengthError = 'VALIDATION.MIN_LENGTH.ERROR',\n    minLengthGuide = 'VALIDATION.MIN_LENGTH.GUIDE',\n    maxLengthError = 'VALIDATION.MAX_LENGTH.ERROR',\n    maxLengthGuide = 'VALIDATION.MAX_LENGTH.GUIDE',\n    minError = 'VALIDATION.MIN.ERROR',\n    minGuide = 'VALIDATION.MIN.GUIDE',\n    maxError = 'VALIDATION.MAX.ERROR',\n    maxGuide = 'VALIDATION.MAX.GUIDE',\n    patternError = 'VALIDATION.PATTERN.ERROR',\n    patternGuide = 'VALIDATION.PATTERN.GUIDE',\n    matchError = 'VALIDATION.MATCH.ERROR',\n    matchGuide = 'VALIDATION.MATCH.GUIDE',\n    uniqueError = 'VALIDATION.UNIQUE.ERROR',\n    uniqueGuide = 'VALIDATION.UNIQUE.GUIDE',\n    customError = 'VALIDATION.CUSTOM.ERROR',\n    customGuide = 'VALIDATION.CUSTOM.GUIDE',\n    betweenMaxMinError = 'VALIDATION.BETWEEN.MAX.MIN.ERROR',\n    betweenMaxMinGuide = 'VALIDATION.BETWEEN.MAX.MIN.GUIDE',\n    betweenMaxLengthMinLengthError = 'VALIDATION.BETWEEN.MAX.MIN.LENGTH.ERROR',\n    betweenMaxLengthMinLengthGuide = 'VALIDATION.BETWEEN.MAX.MIN.LENGTH.GUIDE',\n\n    // Phone validation\n    phonePatternError = 'VALIDATION.PHONE.PATTERN.ERROR',\n    phonePatternGuide = 'VALIDATION.PHONE.PATTERN.GUIDE',\n\n    // First name validation\n    firstNameError = 'VALIDATION.FIRST_NAME.ERROR',\n    firstNameGuide = 'VALIDATION.FIRST_NAME.GUIDE',\n\n    // Last name validation\n    lastNameError = 'VALIDATION.LAST_NAME.ERROR',\n    lastNameGuide = 'VALIDATION.LAST_NAME.GUIDE',\n\n    // Full name validation\n    fullNameError = 'VALIDATION.FULL_NAME.ERROR',\n    fullNameGuide = 'VALIDATION.FULL_NAME.GUIDE',\n\n    // Password validation\n    passwordStrongError = 'VALIDATION.PASSWORD.STRONG.ERROR',\n    passwordStrongGuide = 'VALIDATION.PASSWORD.STRONG.GUIDE',\n    passwordMediumError = 'VALIDATION.PASSWORD.MEDIUM.ERROR',\n    passwordMediumGuide = 'VALIDATION.PASSWORD.MEDIUM.GUIDE',\n\n    // URL validation\n    urlPatternError = 'VALIDATION.URL.PATTERN.ERROR',\n    urlPatternGuide = 'VALIDATION.URL.PATTERN.GUIDE',\n\n    // Credit card validation\n    creditCardError = 'VALIDATION.CREDIT_CARD.ERROR',\n    creditCardGuide = 'VALIDATION.CREDIT_CARD.GUIDE',\n\n    // Postal code validation\n    postalCodeError = 'VALIDATION.POSTAL_CODE.ERROR',\n    postalCodeGuide = 'VALIDATION.POSTAL_CODE.GUIDE',\n\n    // SSN validation\n    ssnError = 'VALIDATION.SSN.ERROR',\n    ssnGuide = 'VALIDATION.SSN.GUIDE',\n\n    // Currency validation\n    currencyError = 'VALIDATION.CURRENCY.ERROR',\n    currencyGuide = 'VALIDATION.CURRENCY.GUIDE',\n\n    // Age validation\n    ageError = 'VALIDATION.AGE.ERROR',\n    ageGuide = 'VALIDATION.AGE.GUIDE', // Username validation\n    usernameError = 'VALIDATION.USERNAME.ERROR',\n    usernameGuide = 'VALIDATION.USERNAME.GUIDE',\n\n    // Country-specific validation\n    phoneCountryError = 'VALIDATION.PHONE.COUNTRY.ERROR',\n    phoneCountryGuide = 'VALIDATION.PHONE.COUNTRY.GUIDE',\n    postalCodeCountryError = 'VALIDATION.POSTAL_CODE.COUNTRY.ERROR',\n    postalCodeCountryGuide = 'VALIDATION.POSTAL_CODE.COUNTRY.GUIDE',\n    ssnCountryError = 'VALIDATION.SSN.COUNTRY.ERROR',\n    ssnCountryGuide = 'VALIDATION.SSN.COUNTRY.GUIDE',\n\n    // Multi-country validation\n    phoneMultiCountryError = 'VALIDATION.PHONE.MULTI_COUNTRY.ERROR',\n    phoneMultiCountryGuide = 'VALIDATION.PHONE.MULTI_COUNTRY.GUIDE',\n    postalCodeMultiCountryError = 'VALIDATION.POSTAL_CODE.MULTI_COUNTRY.ERROR',\n    postalCodeMultiCountryGuide = 'VALIDATION.POSTAL_CODE.MULTI_COUNTRY.GUIDE',\n    ssnMultiCountryError = 'VALIDATION.SSN.MULTI_COUNTRY.ERROR',\n    ssnMultiCountryGuide = 'VALIDATION.SSN.MULTI_COUNTRY.GUIDE',\n\n    // Switzerland-specific\n    phoneSwitzerlandError = 'VALIDATION.PHONE.SWITZERLAND.ERROR',\n    phoneSwitzerlandGuide = 'VALIDATION.PHONE.SWITZERLAND.GUIDE',\n    postalCodeSwitzerlandError = 'VALIDATION.POSTAL_CODE.SWITZERLAND.ERROR',\n    postalCodeSwitzerlandGuide = 'VALIDATION.POSTAL_CODE.SWITZERLAND.GUIDE',\n    ssnSwitzerlandError = 'VALIDATION.SSN.SWITZERLAND.ERROR',\n    ssnSwitzerlandGuide = 'VALIDATION.SSN.SWITZERLAND.GUIDE'\n}\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MaxBuilder = (name: string, value: number) =>\n    new ValidationConstraintBuilder<number>('max')\n        .setConstraint(value)\n        .setName(name)\n        .setErrorMessage(ValidationLocalizeKeys.maxError)\n        .setGuideMessage(ValidationLocalizeKeys.maxGuide)\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MaxLengthBuilder = (name: string, value: number) =>\n    new ValidationConstraintBuilder<number>('maxLength')\n        .setConstraint(value)\n        .setName(name)\n        .setErrorMessage(ValidationLocalizeKeys.maxLengthError)\n        .setGuideMessage(ValidationLocalizeKeys.maxLengthGuide)\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MinBuilder = (name: string, value: number) =>\n    new ValidationConstraintBuilder<number>('min')\n        .setConstraint(value)\n        .setName(name)\n        .setErrorMessage(ValidationLocalizeKeys.minError)\n        .setGuideMessage(ValidationLocalizeKeys.minGuide)\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MinLengthBuilder = (name: string, value: number) =>\n    new ValidationConstraintBuilder<number>('minLength')\n        .setConstraint(value)\n        .setName(name)\n        .setErrorMessage(ValidationLocalizeKeys.minLengthError)\n        .setGuideMessage(ValidationLocalizeKeys.minLengthGuide)\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const PatternBuilder = (name: string, value: RegExp) =>\n    new ValidationConstraintBuilder<RegExp>('pattern')\n        .setConstraint(value)\n        .setName(name)\n        .setErrorMessage(ValidationLocalizeKeys.patternError)\n        .setGuideMessage(ValidationLocalizeKeys.patternGuide)\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const RequiredBuilder = (name: string, value: boolean) =>\n    new ValidationConstraintBuilder<boolean>('required')\n        .setConstraint(value)\n        .setName(name)\n        .setErrorMessage(ValidationLocalizeKeys.requiredError)\n        .setGuideMessage(ValidationLocalizeKeys.requiredGuide)\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MaxAndMaxLengthBuilder = (name: string, maxValue: number, maxLength: number) =>\n    new GenericValidationBuilder().setConstraints([\n        new ValidationConstraintBuilder<number>('max')\n            .setConstraint(maxValue)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.maxError)\n            .setGuideMessage(ValidationLocalizeKeys.maxGuide),\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(maxLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.maxLengthError)\n            .setGuideMessage(ValidationLocalizeKeys.maxLengthGuide)\n    ])\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MaxAndMinLengthBuilder = (name: string, maxValue: number, minLength: number) =>\n    new GenericValidationBuilder().setConstraints([\n        new ValidationConstraintBuilder<number>('max')\n            .setConstraint(maxValue)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.maxError)\n            .setGuideMessage(ValidationLocalizeKeys.maxGuide),\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(minLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.minLengthError)\n            .setGuideMessage(ValidationLocalizeKeys.minLengthGuide)\n    ])\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MinAndMaxLengthBuilder = (name: string, minValue: number, maxLength: number) =>\n    new GenericValidationBuilder().setConstraints([\n        new ValidationConstraintBuilder<number>('min')\n            .setConstraint(minValue)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.minError)\n            .setGuideMessage(ValidationLocalizeKeys.minGuide),\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(maxLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.maxLengthError)\n            .setGuideMessage(ValidationLocalizeKeys.maxLengthGuide)\n    ])\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MinAndMinLengthBuilder = (name: string, minValue: number, minLength: number) =>\n    new GenericValidationBuilder().setConstraints([\n        new ValidationConstraintBuilder<number>('min')\n            .setConstraint(minValue)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.minError)\n            .setGuideMessage(ValidationLocalizeKeys.minGuide),\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(minLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.minLengthError)\n            .setGuideMessage(ValidationLocalizeKeys.minLengthGuide)\n    ])\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MinLengthAndMaxLengthBuilder = (name: string, minLength: number, maxLength: number) =>\n    new GenericValidationBuilder().setConstraints([\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(minLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.minLengthError)\n            .setGuideMessage(ValidationLocalizeKeys.minLengthGuide),\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(maxLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.maxLengthError)\n            .setGuideMessage(ValidationLocalizeKeys.maxLengthGuide)\n    ])\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MinMaxBuilder = (name: string, minValue: number, maxValue: number) =>\n    new GenericValidationBuilder().setConstraints([\n        new ValidationConstraintBuilder<number>('min')\n            .setConstraint(minValue)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.minError)\n            .setGuideMessage(ValidationLocalizeKeys.minGuide),\n        new ValidationConstraintBuilder<number>('max')\n            .setConstraint(maxValue)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.maxError)\n            .setGuideMessage(ValidationLocalizeKeys.maxGuide)\n    ])\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MaxMinLengthAndMaxLengthBuilder = (\n    name: string,\n    maxValue: number,\n    minLength: number,\n    maxLength: number\n) =>\n    new GenericValidationBuilder().setConstraints([\n        new ValidationConstraintBuilder<number>('max')\n            .setConstraint(maxValue)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.maxError)\n            .setGuideMessage(ValidationLocalizeKeys.maxGuide),\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(minLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.minLengthError)\n            .setGuideMessage(ValidationLocalizeKeys.minLengthGuide),\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(maxLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.maxLengthError)\n            .setGuideMessage(ValidationLocalizeKeys.maxLengthGuide)\n    ])\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MinMaxAndMaxLengthBuilder = (\n    name: string,\n    minValue: number,\n    maxValue: number,\n    maxLength: number\n) =>\n    new GenericValidationBuilder().setConstraints([\n        new ValidationConstraintBuilder<number>('min')\n            .setConstraint(minValue)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.minError)\n            .setGuideMessage(ValidationLocalizeKeys.minGuide),\n        new ValidationConstraintBuilder<number>('max')\n            .setConstraint(maxValue)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.maxError)\n            .setGuideMessage(ValidationLocalizeKeys.maxGuide),\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(maxLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.maxLengthError)\n            .setGuideMessage(ValidationLocalizeKeys.maxLengthGuide)\n    ])\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MinMaxAndMinLengthBuilder = (\n    name: string,\n    minValue: number,\n    maxValue: number,\n    minLength: number\n) =>\n    new GenericValidationBuilder().setConstraints([\n        new ValidationConstraintBuilder<number>('min')\n            .setConstraint(minValue)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.minError)\n            .setGuideMessage(ValidationLocalizeKeys.minGuide),\n        new ValidationConstraintBuilder<number>('max')\n            .setConstraint(maxValue)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.maxError)\n            .setGuideMessage(ValidationLocalizeKeys.maxGuide),\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(minLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.minLengthError)\n            .setGuideMessage(ValidationLocalizeKeys.minLengthGuide)\n    ])\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MinMinLengthAndMaxLengthBuilder = (\n    name: string,\n    minValue: number,\n    minLength: number,\n    maxLength: number\n) =>\n    new GenericValidationBuilder().setConstraints([\n        new ValidationConstraintBuilder<number>('min')\n            .setConstraint(minValue)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.minError)\n            .setGuideMessage(ValidationLocalizeKeys.minGuide),\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(minLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.minLengthError)\n            .setGuideMessage(ValidationLocalizeKeys.minLengthGuide),\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(maxLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.maxLengthError)\n            .setGuideMessage(ValidationLocalizeKeys.maxLengthGuide)\n    ])\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const MinMaxMinLengthAndMaxLengthBuilder = (\n    name: string,\n    minValue: number,\n    maxValue: number,\n    minLength: number,\n    maxLength: number\n) =>\n    new GenericValidationBuilder().setConstraints([\n        new ValidationConstraintBuilder<number>('min')\n            .setConstraint(minValue)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.minError)\n            .setGuideMessage(ValidationLocalizeKeys.minGuide),\n        new ValidationConstraintBuilder<number>('max')\n            .setConstraint(maxValue)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.maxError)\n            .setGuideMessage(ValidationLocalizeKeys.maxGuide),\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(minLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.minLengthError)\n            .setGuideMessage(ValidationLocalizeKeys.minLengthGuide),\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(maxLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.maxLengthError)\n            .setGuideMessage(ValidationLocalizeKeys.maxLengthGuide)\n    ])\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\n/** base required date validator between min and max dates */\nexport const minMaxDatesBuilder = (name: string, minDate: number, maxDate: number) =>\n    new GenericValidationBuilder().setConstraints([\n        new ValidationConstraintBuilder<number>('min')\n            .setConstraint(minDate)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.dateError)\n            .setGuideMessage(ValidationLocalizeKeys.dateGuide),\n        new ValidationConstraintBuilder<number>('max')\n            .setConstraint(maxDate)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.dateError)\n            .setGuideMessage(ValidationLocalizeKeys.dateGuide)\n    ])\n","import { ValidationConstraintBuilder } from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\n/** base required name validator between 3 and 50 length*/\nexport const minMaxNameBuilder = (name: string) =>\n    new GenericValidationBuilder().setConstraints([\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(3)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.nameError)\n            .setGuideMessage(ValidationLocalizeKeys.nameGuide),\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(50)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.nameError)\n            .setGuideMessage(ValidationLocalizeKeys.nameGuide)\n    ])\n","/**\n * FORMULAR - Validation Regex Patterns\n * Copyright (c) 2025 Piana Tadeo\n * Licensed under MIT License\n *\n * Validation patterns for international formats\n *\n * Phone patterns based on ITU-T E.164 international standard\n * Postal code patterns based on Universal Postal Union standards\n * Country codes follow ISO 3166-1 alpha-2 standard\n *\n * These patterns are derived from public standards and common formats\n */\n\nexport const numericOnly = /^\\d*$/\nexport const namesPattern = /^[a-zA-Z\\-_\\s]*$/\nexport const dateEuPattern = /^(0[1-9]|[12]\\d|3[01])\\/?-?\\.?(0[1-9]|1[01,2])\\/?-?\\.?(19|20)\\d{2}$/\n\nexport const dateIso8601Pattern =\n    /^(19|20)\\d{2}\\/?-?\\.?(0[1-9]|1[01,2])\\/?-?\\.?(0[1-9]|[12]\\d|3[01])$/\n\nexport const eMailPattern = /^[\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4}$/\n\n// Phone number patterns\nexport const phonePattern =\n    /^(\\+\\d{1,3}[-.\\s]?)?\\(?\\d{1,4}\\)?[-.\\s]?\\d{1,4}[-.\\s]?\\d{1,4}[-.\\s]?\\d{1,9}$/\nexport const phoneSimplePattern = /^[\\d+\\-().\\s]{7,20}$/\n\n// Country-specific phone patterns\nexport const phonePatterns = {\n    US: /^(\\+1[-.\\s]?)?\\(?\\d{3}\\)?[-.\\s]?\\d{3}[-.\\s]?\\d{4}$/,\n    CA: /^(\\+1[-.\\s]?)?\\(?\\d{3}\\)?[-.\\s]?\\d{3}[-.\\s]?\\d{4}$/,\n    UK: /^(\\+44[-.\\s]?)?(0\\d{4}[-.\\s]?\\d{6}|\\d{5}[-.\\s]?\\d{6})$/,\n    DE: /^(\\+49[-.\\s]?)?\\(?\\d{3,5}\\)?[-.\\s]?\\d{6,8}$/,\n    FR: /^(\\+33[-.\\s]?)?\\(?\\d{1,2}\\)?[-.\\s]?\\d{2}[-.\\s]?\\d{2}[-.\\s]?\\d{2}[-.\\s]?\\d{2}$/,\n    CH: /^(\\+41[-.\\s]?)?\\(?\\d{2}\\)?[-.\\s]?\\d{3}[-.\\s]?\\d{2}[-.\\s]?\\d{2}$/,\n    IT: /^(\\+39[-.\\s]?)?\\(?\\d{2,3}\\)?[-.\\s]?\\d{6,8}$/,\n    ES: /^(\\+34[-.\\s]?)?\\d{3}[-.\\s]?\\d{3}[-.\\s]?\\d{3}$/,\n    AT: /^(\\+43[-.\\s]?)?\\(?\\d{1,4}\\)?[-.\\s]?\\d{6,7}$/,\n    NL: /^(\\+31[-.\\s]?)?\\(?\\d{2,3}\\)?[-.\\s]?\\d{7,8}$/,\n    BE: /^(\\+32[-.\\s]?)?\\(?\\d{1,2}\\)?[-.\\s]?\\d{3}[-.\\s]?\\d{2}[-.\\s]?\\d{2}$/,\n    LU: /^(\\+352[-.\\s]?)?\\d{3}[-.\\s]?\\d{3}[-.\\s]?\\d{3}$/\n}\n\n// Name patterns\nexport const firstNamePattern = /^[a-zA-Z]+([',. -][a-zA-Z]+)*$/\nexport const lastNamePattern = /^[a-zA-Z]+([',. -][a-zA-Z]+)*$/\nexport const fullNamePattern = /^[a-zA-Z]+([',. -][a-zA-Z]+)*\\s+[a-zA-Z]+([',. -][a-zA-Z]+)*$/\n\n// Password patterns\nexport const passwordStrongPattern =\n    /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}$/\nexport const passwordMediumPattern = /^(?=.*[a-zA-Z])(?=.*\\d)[a-zA-Z\\d@$!%*?&]{6,}$/\n\n// URL pattern\nexport const urlPattern = /^(https?:\\/\\/)?([\\da-z.-]+)\\.([a-z.]{2,6})(\\/[\\w .-]*)*\\/?$/\n\n// Credit card pattern (simplified for major cards)\nexport const creditCardPattern = /^(?:4\\d{15}|5[1-5]\\d{14}|3[47]\\d{13})$/\n\n// Postal code patterns\nexport const postalCodeUSPattern = /^\\d{5}(-\\d{4})?$/\nexport const postalCodeCanadaPattern = /^[A-Za-z]\\d[A-Za-z][ -]?\\d[A-Za-z]\\d$/\nexport const postalCodeUKPattern = /^[A-Za-z]{1,2}\\d[A-Za-z\\d]?\\s?\\d[A-Za-z]{2}$/\n\n// Country-specific postal code patterns (NPA for postal codes)\nexport const postalCodePatterns = {\n    US: /^\\d{5}(-\\d{4})?$/,\n    CA: /^[A-Za-z]\\d[A-Za-z][ -]?\\d[A-Za-z]\\d$/,\n    UK: /^[A-Za-z]{1,2}\\d[A-Za-z\\d]?\\s?\\d[A-Za-z]{2}$/,\n    DE: /^\\d{5}$/,\n    FR: /^\\d{5}$/,\n    CH: /^\\d{4}$/, // Switzerland postal codes (NPA)\n    IT: /^\\d{5}$/,\n    ES: /^\\d{5}$/,\n    AT: /^\\d{4}$/,\n    NL: /^\\d{4}\\s?[A-Za-z]{2}$/,\n    BE: /^\\d{4}$/,\n    LU: /^L?-?\\d{4}$/\n}\n\n// Social Security Number (US)\nexport const ssnPattern = /^\\d{3}-?\\d{2}-?\\d{4}$/\n\n// Country-specific SSN/ID patterns\nexport const ssnPatterns = {\n    US: /^\\d{3}-?\\d{2}-?\\d{4}$/,\n    CA: /^\\d{3}[-.\\s]?\\d{3}[-.\\s]?\\d{3}$/, // Canadian SIN\n    UK: /^[A-Za-z]{2}\\d{6}[A-Za-z]$/, // UK National Insurance Number\n    DE: /^\\d{2}\\s?\\d{6}\\s?[A-Za-z]\\s?\\d{3}$/, // German ID\n    FR: /^[12]\\d{2}(0[1-9]|1[0-2])\\d{2}\\d{3}\\d{3}\\d{2}$/, // French INSEE\n    CH: /^756\\.\\d{4}\\.\\d{4}\\.\\d{2}$/, // Swiss AHV number\n    IT: /^[A-Za-z]{6}\\d{2}[A-Za-z]\\d{2}[A-Za-z]\\d{3}[A-ZaZ]$/, // Italian Codice Fiscale\n    ES: /^\\d{8}[A-Za-z]$/, // Spanish DNI\n    AT: /^\\d{4}\\s?\\d{6}$/, // Austrian Social Security\n    NL: /^\\d{9}$/, // Dutch BSN\n    BE: /^\\d{2}\\.\\d{2}\\.\\d{2}-\\d{3}\\.\\d{2}$/, // Belgian National Number\n    LU: /^\\d{13}$/ // Luxembourg ID\n}\n\n// Currency pattern\nexport const currencyPattern = /^\\$?[\\d,]+(\\.\\d{2})?$/\n\n// Time patterns\nexport const timePattern = /^([01]?\\d|2[0-3]):[0-5]\\d(:[0-5]\\d)?$/\nexport const time12HourPattern = /^(0?[1-9]|1[0-2]):[0-5]\\d\\s?(AM|PM|am|pm)$/\n\n// Age pattern\nexport const agePattern = /^(?:[1-9]|[1-9]\\d|1[01]\\d|120)$/\n\n// Username pattern\nexport const usernamePattern = /^[a-zA-Z0-9_-]{3,20}$/\n\n// Country metadata and validation patterns\nexport const countryMetadata = {\n    US: { name: 'United States', code: 'US', phonePrefix: '+1' },\n    CA: { name: 'Canada', code: 'CA', phonePrefix: '+1' },\n    UK: { name: 'United Kingdom', code: 'UK', phonePrefix: '+44' },\n    DE: { name: 'Germany', code: 'DE', phonePrefix: '+49' },\n    FR: { name: 'France', code: 'FR', phonePrefix: '+33' },\n    CH: { name: 'Switzerland', code: 'CH', phonePrefix: '+41' },\n    IT: { name: 'Italy', code: 'IT', phonePrefix: '+39' },\n    ES: { name: 'Spain', code: 'ES', phonePrefix: '+34' },\n    AT: { name: 'Austria', code: 'AT', phonePrefix: '+43' },\n    NL: { name: 'Netherlands', code: 'NL', phonePrefix: '+31' },\n    BE: { name: 'Belgium', code: 'BE', phonePrefix: '+32' },\n    LU: { name: 'Luxembourg', code: 'LU', phonePrefix: '+352' }\n} as const\n\nexport type CountryCode = keyof typeof countryMetadata\nexport type ValidationType = 'phone' | 'postal' | 'ssn'\n\n// Pattern management utilities\nexport const PatternManager = {\n    getPattern<\n        T extends\n            | keyof typeof phonePatterns\n            | keyof typeof postalCodePatterns\n            | keyof typeof ssnPatterns\n    >(type: ValidationType, countryCode: CountryCode): RegExp | undefined {\n        switch (type) {\n            case 'phone':\n                return phonePatterns[countryCode as keyof typeof phonePatterns]\n            case 'postal':\n                return postalCodePatterns[countryCode as keyof typeof postalCodePatterns]\n            case 'ssn':\n                return ssnPatterns[countryCode as keyof typeof ssnPatterns]\n            default:\n                return undefined\n        }\n    },\n\n    getAvailableCountries(type?: ValidationType): CountryCode[] {\n        if (!type) {\n            return Object.keys(countryMetadata) as CountryCode[]\n        }\n\n        switch (type) {\n            case 'phone':\n                return Object.keys(phonePatterns) as CountryCode[]\n            case 'postal':\n                return Object.keys(postalCodePatterns) as CountryCode[]\n            case 'ssn':\n                return Object.keys(ssnPatterns) as CountryCode[]\n            default:\n                return []\n        }\n    },\n\n    getCountryName(countryCode: CountryCode): string {\n        return countryMetadata[countryCode]?.name || countryCode\n    },\n\n    getPhonePrefix(countryCode: CountryCode): string {\n        return countryMetadata[countryCode]?.phonePrefix || ''\n    },\n\n    createMultiCountryPattern(\n        type: ValidationType,\n        countryCodes: CountryCode[]\n    ): RegExp | undefined {\n        const patterns = countryCodes\n            .map((code) => this.getPattern(type, code))\n            .filter(Boolean)\n            .map((pattern) => pattern!.source)\n\n        if (patterns.length === 0) return undefined\n        if (patterns.length === 1) return new RegExp(patterns[0])\n\n        // Combine patterns with OR operator\n        return new RegExp(`(${patterns.join('|')})`)\n    }\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { agePattern } from '../validation.regex.patterns'\n\nexport const ageValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.ageError)\n                .setGuideMessage(ValidationLocalizeKeys.ageGuide)\n        )\n    }\n\n    // Age pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(agePattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ageError)\n            .setGuideMessage(ValidationLocalizeKeys.ageGuide)\n    )\n\n    // Min value for age\n    constraints.push(\n        new ValidationConstraintBuilder<number>('min')\n            .setConstraint(1)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ageError)\n            .setGuideMessage(ValidationLocalizeKeys.ageGuide)\n    )\n\n    // Max value for age\n    constraints.push(\n        new ValidationConstraintBuilder<number>('max')\n            .setConstraint(120)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ageError)\n            .setGuideMessage(ValidationLocalizeKeys.ageGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { creditCardPattern } from '../validation.regex.patterns'\n\nexport const creditCardValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.creditCardError)\n                .setGuideMessage(ValidationLocalizeKeys.creditCardGuide)\n        )\n    }\n\n    // Credit card pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(creditCardPattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.creditCardError)\n            .setGuideMessage(ValidationLocalizeKeys.creditCardGuide)\n    )\n\n    // Min length for credit card\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(13)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.creditCardError)\n            .setGuideMessage(ValidationLocalizeKeys.creditCardGuide)\n    )\n\n    // Max length for credit card\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(19)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.creditCardError)\n            .setGuideMessage(ValidationLocalizeKeys.creditCardGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import { IServiceManager } from '@core/managers/service-manager/service-manager.types'\n// TODO: Update to use new configuration manager\n// import { getValidationPresets } from '@setup/validation/validation-config-presets'\nimport {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { currencyPattern } from '../validation.regex.patterns'\n\n// Original validator (kept for backward compatibility)\nexport const currencyValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.currencyError)\n                .setGuideMessage(ValidationLocalizeKeys.currencyGuide)\n        )\n    }\n\n    // Currency pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(currencyPattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.currencyError)\n            .setGuideMessage(ValidationLocalizeKeys.currencyGuide)\n    )\n\n    // Max length for currency\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(20)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.currencyError)\n            .setGuideMessage(ValidationLocalizeKeys.currencyGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n\n/**\n * Enhanced currency validator that uses ValidationConfigPresets\n * This is the new pattern that integrates with your configuration system\n */\nexport const currencyValidatorWithPresets = (\n    name: string,\n    serviceManager: IServiceManager,\n    required: boolean = true\n) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.currencyError)\n                .setGuideMessage(ValidationLocalizeKeys.currencyGuide)\n        )\n    } // Get pattern from ValidationConfigPresets\n    let currencyPattern: RegExp\n    // TODO: Update to use configuration manager patterns\n    // try {\n    //     const presets = getValidationPresets(serviceManager)\n    //     currencyPattern = presets.currency\n    // } catch (error: any) {\n    //     console.warn(\n    //         'ValidationConfigPresets not available, using fallback pattern:',\n    //         error.message\n    //     )\n    // Fallback to hardcoded pattern\n    currencyPattern = /^\\d+([,.]\\d+)*([,.]\\d{1,2})?$/\n    // }\n\n    // Currency pattern validation using preset\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(currencyPattern) // ← Using preset pattern!\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.currencyError)\n            .setGuideMessage(ValidationLocalizeKeys.currencyGuide)\n    )\n\n    // Max length for currency\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(20)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.currencyError)\n            .setGuideMessage(ValidationLocalizeKeys.currencyGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { dateIso8601Pattern } from '../validation.regex.patterns'\n\nexport const dateValidator = (\n    name: string,\n    required: boolean = true,\n    minDate?: Date,\n    maxDate?: Date\n) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.dateError)\n                .setGuideMessage(ValidationLocalizeKeys.dateGuide)\n        )\n    }\n\n    // Date pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(dateIso8601Pattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.dateError)\n            .setGuideMessage(ValidationLocalizeKeys.dateGuide)\n    )\n\n    // Min date validation\n    if (minDate) {\n        constraints.push(\n            new ValidationConstraintBuilder<number>('min')\n                .setConstraint(minDate.getTime())\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.dateError)\n                .setGuideMessage(ValidationLocalizeKeys.dateGuide)\n        )\n    }\n\n    // Max date validation\n    if (maxDate) {\n        constraints.push(\n            new ValidationConstraintBuilder<number>('max')\n                .setConstraint(maxDate.getTime())\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.dateError)\n                .setGuideMessage(ValidationLocalizeKeys.dateGuide)\n        )\n    }\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { firstNamePattern } from '../validation.regex.patterns'\n\nexport const firstNameValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.firstNameError)\n                .setGuideMessage(ValidationLocalizeKeys.firstNameGuide)\n        )\n    }\n\n    // First name pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(firstNamePattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.firstNameError)\n            .setGuideMessage(ValidationLocalizeKeys.firstNameGuide)\n    )\n\n    // Min length for first name\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(2)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.firstNameError)\n            .setGuideMessage(ValidationLocalizeKeys.firstNameGuide)\n    )\n\n    // Max length for first name\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(50)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.firstNameError)\n            .setGuideMessage(ValidationLocalizeKeys.firstNameGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { fullNamePattern } from '../validation.regex.patterns'\n\nexport const fullNameValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.fullNameError)\n                .setGuideMessage(ValidationLocalizeKeys.fullNameGuide)\n        )\n    }\n\n    // Full name pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(fullNamePattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.fullNameError)\n            .setGuideMessage(ValidationLocalizeKeys.fullNameGuide)\n    )\n\n    // Min length for full name\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(3)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.fullNameError)\n            .setGuideMessage(ValidationLocalizeKeys.fullNameGuide)\n    )\n\n    // Max length for full name\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(100)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.fullNameError)\n            .setGuideMessage(ValidationLocalizeKeys.fullNameGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { lastNamePattern } from '../validation.regex.patterns'\n\nexport const lastNameValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.lastNameError)\n                .setGuideMessage(ValidationLocalizeKeys.lastNameGuide)\n        )\n    }\n\n    // Last name pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(lastNamePattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.lastNameError)\n            .setGuideMessage(ValidationLocalizeKeys.lastNameGuide)\n    )\n\n    // Min length for last name\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(2)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.lastNameError)\n            .setGuideMessage(ValidationLocalizeKeys.lastNameGuide)\n    )\n\n    // Max length for last name\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(50)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.lastNameError)\n            .setGuideMessage(ValidationLocalizeKeys.lastNameGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { numericOnly } from '../validation.regex.patterns'\n\nexport const numericValidator = (\n    name: string,\n    required: boolean = true,\n    minValue?: number,\n    maxValue?: number\n) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.numberError)\n                .setGuideMessage(ValidationLocalizeKeys.numberGuide)\n        )\n    }\n\n    // Numeric pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(numericOnly)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.numberError)\n            .setGuideMessage(ValidationLocalizeKeys.numberGuide)\n    )\n\n    // Min value validation\n    if (minValue !== undefined) {\n        constraints.push(\n            new ValidationConstraintBuilder<number>('min')\n                .setConstraint(minValue)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.minError)\n                .setGuideMessage(ValidationLocalizeKeys.minGuide)\n        )\n    }\n\n    // Max value validation\n    if (maxValue !== undefined) {\n        constraints.push(\n            new ValidationConstraintBuilder<number>('max')\n                .setConstraint(maxValue)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.maxError)\n                .setGuideMessage(ValidationLocalizeKeys.maxGuide)\n        )\n    }\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { passwordMediumPattern } from '../validation.regex.patterns'\n\nexport const passwordMediumValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.passwordError)\n                .setGuideMessage(ValidationLocalizeKeys.passwordGuide)\n        )\n    }\n\n    // Medium password pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(passwordMediumPattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.passwordMediumError)\n            .setGuideMessage(ValidationLocalizeKeys.passwordMediumGuide)\n    )\n\n    // Min length for password\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(6)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.passwordError)\n            .setGuideMessage(ValidationLocalizeKeys.passwordGuide)\n    )\n\n    // Max length for password\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(128)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.passwordError)\n            .setGuideMessage(ValidationLocalizeKeys.passwordGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { passwordStrongPattern } from '../validation.regex.patterns'\n\nexport const passwordStrongValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.passwordError)\n                .setGuideMessage(ValidationLocalizeKeys.passwordGuide)\n        )\n    }\n\n    // Strong password pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(passwordStrongPattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.passwordStrongError)\n            .setGuideMessage(ValidationLocalizeKeys.passwordStrongGuide)\n    )\n\n    // Min length for password\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(8)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.passwordError)\n            .setGuideMessage(ValidationLocalizeKeys.passwordGuide)\n    )\n\n    // Max length for password\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(128)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.passwordError)\n            .setGuideMessage(ValidationLocalizeKeys.passwordGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { phonePattern } from '../validation.regex.patterns'\n\nexport const phoneValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.phoneError)\n                .setGuideMessage(ValidationLocalizeKeys.phoneGuide)\n        )\n    }\n\n    // Phone pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(phonePattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.phonePatternError)\n            .setGuideMessage(ValidationLocalizeKeys.phonePatternGuide)\n    )\n\n    // Min length for phone\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(7)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.phoneError)\n            .setGuideMessage(ValidationLocalizeKeys.phoneGuide)\n    )\n\n    // Max length for phone\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(20)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.phoneError)\n            .setGuideMessage(ValidationLocalizeKeys.phoneGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport {\n    postalCodeCanadaPattern,\n    postalCodeUKPattern,\n    postalCodeUSPattern\n} from '../validation.regex.patterns'\nimport { PostalCodeRegionType } from './types/postal-code-region.type'\n\n// Backward compatibility alias\nexport type PostalCodeRegion = PostalCodeRegionType\n\nexport const postalCodeValidator = (\n    name: string,\n    region: PostalCodeRegionType = 'US',\n    required: boolean = true\n) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.postalCodeError)\n                .setGuideMessage(ValidationLocalizeKeys.postalCodeGuide)\n        )\n    }\n\n    // Select pattern based on region\n    let pattern: RegExp\n    switch (region) {\n        case 'CA':\n            pattern = postalCodeCanadaPattern\n            break\n        case 'UK':\n            pattern = postalCodeUKPattern\n            break\n        default:\n            pattern = postalCodeUSPattern\n            break\n    }\n\n    // Postal code pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(pattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.postalCodeError)\n            .setGuideMessage(ValidationLocalizeKeys.postalCodeGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { ssnPattern } from '../validation.regex.patterns'\n\nexport const ssnValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.ssnError)\n                .setGuideMessage(ValidationLocalizeKeys.ssnGuide)\n        )\n    }\n\n    // SSN pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(ssnPattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ssnError)\n            .setGuideMessage(ValidationLocalizeKeys.ssnGuide)\n    )\n\n    // Length validation for SSN\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(9)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ssnError)\n            .setGuideMessage(ValidationLocalizeKeys.ssnGuide)\n    )\n\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(11)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ssnError)\n            .setGuideMessage(ValidationLocalizeKeys.ssnGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { timePattern } from '../validation.regex.patterns'\n\nexport const timeValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.timeError)\n                .setGuideMessage(ValidationLocalizeKeys.timeGuide)\n        )\n    }\n\n    // Time pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(timePattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.timeError)\n            .setGuideMessage(ValidationLocalizeKeys.timeGuide)\n    )\n\n    // Length validation for time format (HH:MM or HH:MM:SS)\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(5)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.timeError)\n            .setGuideMessage(ValidationLocalizeKeys.timeGuide)\n    )\n\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(8)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.timeError)\n            .setGuideMessage(ValidationLocalizeKeys.timeGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { urlPattern } from '../validation.regex.patterns'\n\nexport const urlValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.urlError)\n                .setGuideMessage(ValidationLocalizeKeys.urlGuide)\n        )\n    }\n\n    // URL pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(urlPattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.urlPatternError)\n            .setGuideMessage(ValidationLocalizeKeys.urlPatternGuide)\n    )\n\n    // Max length for URL\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(2048)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.urlError)\n            .setGuideMessage(ValidationLocalizeKeys.urlGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport {\n    GenericValidationBuilder,\n    IGenericValidationBuilder\n} from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { usernamePattern } from '../validation.regex.patterns'\n\nexport const usernameValidator = (\n    name: string,\n    required: boolean = true\n): IGenericValidationBuilder => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.usernameError)\n                .setGuideMessage(ValidationLocalizeKeys.usernameGuide)\n        )\n    }\n\n    // Username pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(usernamePattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.usernameError)\n            .setGuideMessage(ValidationLocalizeKeys.usernameGuide)\n    )\n\n    // Min length for username\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(3)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.usernameError)\n            .setGuideMessage(ValidationLocalizeKeys.usernameGuide)\n    )\n\n    // Max length for username\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(20)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.usernameError)\n            .setGuideMessage(ValidationLocalizeKeys.usernameGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport {\n    CountryCode,\n    countryMetadata,\n    PatternManager,\n    ValidationType\n} from '../validation.regex.patterns'\n\n/**\n * Country code validator - validates against supported country codes\n */\nexport const countryCodeValidator = (\n    name: string,\n    supportedTypes: ValidationType[] = ['phone', 'postal', 'ssn'],\n    required: boolean = true\n) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.requiredError)\n                .setGuideMessage('Please select a country')\n        )\n    }\n\n    // Get available countries that support all requested types\n    const availableCountries = getCountriesWithSupport(supportedTypes)\n    const countryPattern = new RegExp(`^(${availableCountries.join('|')})$`)\n\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(countryPattern)\n            .setName(name)\n            .setErrorMessage('Invalid country selection')\n            .setGuideMessage(\n                `Select from: ${availableCountries.map((c) => PatternManager.getCountryName(c as CountryCode)).join(', ')}`\n            )\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n\n/**\n * Multi-country selector validator\n */\nexport const multiCountryValidator = (\n    name: string,\n    supportedTypes: ValidationType[] = ['phone', 'postal', 'ssn'],\n    required: boolean = true,\n    minCountries: number = 1,\n    maxCountries: number = 5\n) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.requiredError)\n                .setGuideMessage('Please select at least one country')\n        )\n    }\n\n    // Min countries constraint\n    constraints.push(\n        new ValidationConstraintBuilder<number>('min')\n            .setConstraint(minCountries)\n            .setName(name)\n            .setErrorMessage(\n                `Select at least ${minCountries} ${minCountries === 1 ? 'country' : 'countries'}`\n            )\n            .setGuideMessage(\n                `Minimum ${minCountries} ${minCountries === 1 ? 'country' : 'countries'} required`\n            )\n    )\n\n    // Max countries constraint\n    constraints.push(\n        new ValidationConstraintBuilder<number>('max')\n            .setConstraint(maxCountries)\n            .setName(name)\n            .setErrorMessage(`Select at most ${maxCountries} countries`)\n            .setGuideMessage(`Maximum ${maxCountries} countries allowed`)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n\n/**\n * Switzerland validator - ensures Switzerland is included in country selection\n */\nexport const switzerlandIncludedValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.requiredError)\n                .setGuideMessage('Country selection is required')\n        )\n    }\n\n    // Custom validation to ensure Switzerland is included\n    constraints.push(\n        new ValidationConstraintBuilder<(value: string | string[]) => boolean>('custom')\n            .setConstraint((value: string | string[]) => {\n                if (typeof value === 'string') {\n                    return value === 'CH'\n                }\n                return Array.isArray(value) && value.includes('CH')\n            })\n            .setName(name)\n            .setErrorMessage('Switzerland must be included in the selection')\n            .setGuideMessage('Please include Switzerland (CH) in your country selection')\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n\n// Utility functions for country support\n\n/**\n * Get countries that support specific validation types\n */\nexport function getCountriesWithSupport(types: ValidationType[]): string[] {\n    const allCountries = Object.keys(countryMetadata)\n\n    return allCountries.filter((country) => {\n        return types.every((type) => {\n            const availableCountries = PatternManager.getAvailableCountries(type)\n            return availableCountries.includes(country as CountryCode)\n        })\n    })\n}\n\n/**\n * Get country metadata with validation support information\n */\nexport function getCountryValidationInfo(): Array<{\n    code: CountryCode\n    name: string\n    phonePrefix: string\n    supports: {\n        phone: boolean\n        postal: boolean\n        ssn: boolean\n    }\n}> {\n    return Object.keys(countryMetadata).map((code) => {\n        const countryCode = code as CountryCode\n        return {\n            code: countryCode,\n            name: PatternManager.getCountryName(countryCode),\n            phonePrefix: PatternManager.getPhonePrefix(countryCode),\n            supports: {\n                phone: PatternManager.getAvailableCountries('phone').includes(countryCode),\n                postal: PatternManager.getAvailableCountries('postal').includes(countryCode),\n                ssn: PatternManager.getAvailableCountries('ssn').includes(countryCode)\n            }\n        }\n    })\n}\n\n/**\n * Get validation pattern summary for a country\n */\nexport function getCountryPatternSummary(countryCode: CountryCode): {\n    country: string\n    patterns: {\n        phone?: RegExp\n        postal?: RegExp\n        ssn?: RegExp\n    }\n    examples: {\n        phone?: string\n        postal?: string\n        ssn?: string\n    }\n} {\n    return {\n        country: PatternManager.getCountryName(countryCode),\n        patterns: {\n            phone: PatternManager.getPattern('phone', countryCode),\n            postal: PatternManager.getPattern('postal', countryCode),\n            ssn: PatternManager.getPattern('ssn', countryCode)\n        },\n        examples: getCountryExamples(countryCode)\n    }\n}\n\nfunction getCountryExamples(countryCode: CountryCode): {\n    phone?: string\n    postal?: string\n    ssn?: string\n} {\n    const examples: Record<CountryCode, { phone?: string; postal?: string; ssn?: string }> = {\n        US: { phone: '+1 (555) 123-4567', postal: '12345-6789', ssn: '123-45-6789' },\n        CA: { phone: '+1 (416) 555-0123', postal: 'K1A 0A6', ssn: '123 456 789' },\n        UK: { phone: '+44 20 7946 0958', postal: 'SW1A 1AA', ssn: 'AB123456C' },\n        DE: { phone: '+49 30 12345678', postal: '10115', ssn: '12 345678 A 123' },\n        FR: { phone: '+33 1 23 45 67 89', postal: '75001', ssn: '1234567890123' },\n        CH: { phone: '+41 44 123 45 67', postal: '8001', ssn: '756.1234.5678.90' },\n        IT: { phone: '+39 06 1234 5678', postal: '00118', ssn: 'RSSMRA85T10A562S' },\n        ES: { phone: '+34 91 123 4567', postal: '28001', ssn: '12345678Z' },\n        AT: { phone: '+43 1 1234567', postal: '1010', ssn: '1234 567890' },\n        NL: { phone: '+31 20 123 4567', postal: '1012 JS', ssn: '123456789' },\n        BE: { phone: '+32 2 123 45 67', postal: '1000', ssn: '12.34.56-789.01' },\n        LU: { phone: '+352 123 456 789', postal: 'L-1111', ssn: '1234567890123' }\n    }\n    return examples[countryCode] || {}\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { CountryCode, PatternManager, phonePattern } from '../validation.regex.patterns'\n\n/**\n * Country-specific phone validator\n */\nexport const phoneCountryValidator = (\n    name: string,\n    countryCode: CountryCode,\n    required: boolean = true\n) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n    const countryName = PatternManager.getCountryName(countryCode)\n    const phonePrefix = PatternManager.getPhonePrefix(countryCode)\n    const pattern = PatternManager.getPattern('phone', countryCode) || phonePattern\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.phoneCountryError)\n                .setGuideMessage(ValidationLocalizeKeys.phoneCountryGuide)\n        )\n    }\n\n    // Country-specific phone pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(pattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.phoneCountryError)\n            .setGuideMessage(\n                `Enter a valid ${countryName} phone number (e.g., ${phonePrefix} format)`\n            )\n    )\n\n    // Min length based on country\n    const minLength = getMinPhoneLength(countryCode)\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(minLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.phoneCountryError)\n            .setGuideMessage(ValidationLocalizeKeys.phoneCountryGuide)\n    )\n\n    // Max length based on country\n    const maxLength = getMaxPhoneLength(countryCode)\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(maxLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.phoneCountryError)\n            .setGuideMessage(ValidationLocalizeKeys.phoneCountryGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n\n/**\n * Multi-country phone validator - validates against multiple country patterns\n */\nexport const phoneMultiCountryValidator = (\n    name: string,\n    countryCodes: CountryCode[],\n    required: boolean = true\n) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n    const countryNames = countryCodes.map((code) => PatternManager.getCountryName(code)).join(', ')\n    const multiPattern =\n        PatternManager.createMultiCountryPattern('phone', countryCodes) || phonePattern\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.phoneMultiCountryError)\n                .setGuideMessage(ValidationLocalizeKeys.phoneMultiCountryGuide)\n        )\n    }\n\n    // Multi-country phone pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(multiPattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.phoneMultiCountryError)\n            .setGuideMessage(`Enter a valid phone number for: ${countryNames}`)\n    )\n\n    // Use flexible length constraints for multi-country\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(7)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.phoneMultiCountryError)\n            .setGuideMessage(ValidationLocalizeKeys.phoneMultiCountryGuide)\n    )\n\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(25)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.phoneMultiCountryError)\n            .setGuideMessage(ValidationLocalizeKeys.phoneMultiCountryGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n\n/**\n * Switzerland-specific phone validator\n */\nexport const phoneSwitzerlandValidator = (name: string, required: boolean = true) => {\n    return phoneCountryValidator(name, 'CH', required)\n}\n\n// Helper functions for country-specific length constraints\nfunction getMinPhoneLength(countryCode: CountryCode): number {\n    const lengthMap: Record<CountryCode, number> = {\n        US: 10,\n        CA: 10,\n        UK: 10,\n        DE: 11,\n        FR: 10,\n        CH: 9,\n        IT: 9,\n        ES: 9,\n        AT: 10,\n        NL: 9,\n        BE: 9,\n        LU: 8\n    }\n    return lengthMap[countryCode] || 7\n}\n\nfunction getMaxPhoneLength(countryCode: CountryCode): number {\n    const lengthMap: Record<CountryCode, number> = {\n        US: 15,\n        CA: 15,\n        UK: 15,\n        DE: 16,\n        FR: 16,\n        CH: 13,\n        IT: 15,\n        ES: 13,\n        AT: 15,\n        NL: 13,\n        BE: 13,\n        LU: 12\n    }\n    return lengthMap[countryCode] || 20\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { CountryCode, PatternManager, postalCodeUSPattern } from '../validation.regex.patterns'\n\n/**\n * Country-specific postal code validator\n */\nexport const postalCodeCountryValidator = (\n    name: string,\n    countryCode: CountryCode,\n    required: boolean = true\n) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n    const countryName = PatternManager.getCountryName(countryCode)\n    const pattern = PatternManager.getPattern('postal', countryCode) || postalCodeUSPattern\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.postalCodeCountryError)\n                .setGuideMessage(ValidationLocalizeKeys.postalCodeCountryGuide)\n        )\n    }\n\n    // Country-specific postal code pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(pattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.postalCodeCountryError)\n            .setGuideMessage(\n                `Enter a valid ${countryName} postal code ${getPostalCodeExample(countryCode)}`\n            )\n    )\n\n    // Length constraints based on country\n    const { minLength, maxLength } = getPostalCodeLength(countryCode)\n\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(minLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.postalCodeCountryError)\n            .setGuideMessage(ValidationLocalizeKeys.postalCodeCountryGuide)\n    )\n\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(maxLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.postalCodeCountryError)\n            .setGuideMessage(ValidationLocalizeKeys.postalCodeCountryGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n\n/**\n * Multi-country postal code validator\n */\nexport const postalCodeMultiCountryValidator = (\n    name: string,\n    countryCodes: CountryCode[],\n    required: boolean = true\n) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n    const countryNames = countryCodes.map((code) => PatternManager.getCountryName(code)).join(', ')\n    const multiPattern =\n        PatternManager.createMultiCountryPattern('postal', countryCodes) || postalCodeUSPattern\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.postalCodeMultiCountryError)\n                .setGuideMessage(ValidationLocalizeKeys.postalCodeMultiCountryGuide)\n        )\n    }\n\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(multiPattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.postalCodeMultiCountryError)\n            .setGuideMessage(`Enter a valid postal code for: ${countryNames}`)\n    )\n\n    // Use flexible length constraints for multi-country\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(3)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.postalCodeMultiCountryError)\n            .setGuideMessage(ValidationLocalizeKeys.postalCodeMultiCountryGuide)\n    )\n\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(10)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.postalCodeMultiCountryError)\n            .setGuideMessage(ValidationLocalizeKeys.postalCodeMultiCountryGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n\n/**\n * Switzerland-specific postal code validator (NPA - Numéro Postal d'Acheminement)\n */\nexport const postalCodeSwitzerlandValidator = (name: string, required: boolean = true) => {\n    return postalCodeCountryValidator(name, 'CH', required)\n}\n\n/**\n * Switzerland NPA (postal code) validator with enhanced validation\n */\nexport const npaValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.postalCodeSwitzerlandError)\n                .setGuideMessage(ValidationLocalizeKeys.postalCodeSwitzerlandGuide)\n        )\n    }\n\n    // Swiss postal code pattern (4 digits)\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(/^\\d{4}$/)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.postalCodeSwitzerlandError)\n            .setGuideMessage('Enter a valid Swiss NPA (4-digit postal code, e.g., 8001 for Zurich)')\n    )\n\n    // Exact length for Swiss postal codes\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(4)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.postalCodeSwitzerlandError)\n            .setGuideMessage(ValidationLocalizeKeys.postalCodeSwitzerlandGuide)\n    )\n\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(4)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.postalCodeSwitzerlandError)\n            .setGuideMessage(ValidationLocalizeKeys.postalCodeSwitzerlandGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n\n// Helper functions\nfunction getPostalCodeLength(countryCode: CountryCode): { minLength: number; maxLength: number } {\n    const lengthMap: Record<CountryCode, { minLength: number; maxLength: number }> = {\n        US: { minLength: 5, maxLength: 10 },\n        CA: { minLength: 6, maxLength: 7 },\n        UK: { minLength: 6, maxLength: 8 },\n        DE: { minLength: 5, maxLength: 5 },\n        FR: { minLength: 5, maxLength: 5 },\n        CH: { minLength: 4, maxLength: 4 },\n        IT: { minLength: 5, maxLength: 5 },\n        ES: { minLength: 5, maxLength: 5 },\n        AT: { minLength: 4, maxLength: 4 },\n        NL: { minLength: 6, maxLength: 7 },\n        BE: { minLength: 4, maxLength: 4 },\n        LU: { minLength: 4, maxLength: 6 }\n    }\n    return lengthMap[countryCode] || { minLength: 3, maxLength: 10 }\n}\n\nfunction getPostalCodeExample(countryCode: CountryCode): string {\n    const examples: Record<CountryCode, string> = {\n        US: '(e.g., 12345 or 12345-6789)',\n        CA: '(e.g., K1A 0A6)',\n        UK: '(e.g., SW1A 1AA)',\n        DE: '(e.g., 10115)',\n        FR: '(e.g., 75001)',\n        CH: '(e.g., 8001)',\n        IT: '(e.g., 00118)',\n        ES: '(e.g., 28001)',\n        AT: '(e.g., 1010)',\n        NL: '(e.g., 1012 JS)',\n        BE: '(e.g., 1000)',\n        LU: '(e.g., L-1111)'\n    }\n    return examples[countryCode] || ''\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\nimport { CountryCode, PatternManager, ssnPattern } from '../validation.regex.patterns'\n\n/**\n * Country-specific SSN/ID validator\n */\nexport const ssnCountryValidator = (\n    name: string,\n    countryCode: CountryCode,\n    required: boolean = true\n) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n    const countryName = PatternManager.getCountryName(countryCode)\n    const pattern = PatternManager.getPattern('ssn', countryCode) || ssnPattern\n    const idTypeName = getIdTypeName(countryCode)\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.ssnCountryError)\n                .setGuideMessage(ValidationLocalizeKeys.ssnCountryGuide)\n        )\n    }\n\n    // Country-specific SSN/ID pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(pattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ssnCountryError)\n            .setGuideMessage(\n                `Enter a valid ${countryName} ${idTypeName} ${getIdExample(countryCode)}`\n            )\n    )\n\n    // Length constraints based on country\n    const { minLength, maxLength } = getIdLength(countryCode)\n\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(minLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ssnCountryError)\n            .setGuideMessage(ValidationLocalizeKeys.ssnCountryGuide)\n    )\n\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(maxLength)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ssnCountryError)\n            .setGuideMessage(ValidationLocalizeKeys.ssnCountryGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n\n/**\n * Multi-country SSN/ID validator\n */\nexport const ssnMultiCountryValidator = (\n    name: string,\n    countryCodes: CountryCode[],\n    required: boolean = true\n) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n    const countryNames = countryCodes.map((code) => PatternManager.getCountryName(code)).join(', ')\n    const multiPattern = PatternManager.createMultiCountryPattern('ssn', countryCodes) || ssnPattern\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.ssnMultiCountryError)\n                .setGuideMessage(ValidationLocalizeKeys.ssnMultiCountryGuide)\n        )\n    }\n\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(multiPattern)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ssnMultiCountryError)\n            .setGuideMessage(`Enter a valid ID number for: ${countryNames}`)\n    )\n\n    // Use flexible length constraints for multi-country\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(8)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ssnMultiCountryError)\n            .setGuideMessage(ValidationLocalizeKeys.ssnMultiCountryGuide)\n    )\n\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(25)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ssnMultiCountryError)\n            .setGuideMessage(ValidationLocalizeKeys.ssnMultiCountryGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n\n/**\n * Switzerland-specific AHV number validator\n */\nexport const ahvValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.ssnSwitzerlandError)\n                .setGuideMessage(ValidationLocalizeKeys.ssnSwitzerlandGuide)\n        )\n    }\n\n    // Swiss AHV number pattern\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(/^756\\.\\d{4}\\.\\d{4}\\.\\d{2}$/)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ssnSwitzerlandError)\n            .setGuideMessage('Enter a valid Swiss AHV number (e.g., 756.1234.5678.90)')\n    )\n\n    // AHV number length\n    constraints.push(\n        new ValidationConstraintBuilder<number>('minLength')\n            .setConstraint(16)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ssnSwitzerlandError)\n            .setGuideMessage(ValidationLocalizeKeys.ssnSwitzerlandGuide)\n    )\n\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(16)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.ssnSwitzerlandError)\n            .setGuideMessage(ValidationLocalizeKeys.ssnSwitzerlandGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n\n/**\n * Switzerland-specific SSN validator (alias for AHV)\n */\nexport const ssnSwitzerlandValidator = (name: string, required: boolean = true) => {\n    return ssnCountryValidator(name, 'CH', required)\n}\n\n// Helper functions\nfunction getIdTypeName(countryCode: CountryCode): string {\n    const typeNames: Record<CountryCode, string> = {\n        US: 'Social Security Number',\n        CA: 'Social Insurance Number',\n        UK: 'National Insurance Number',\n        DE: 'Identity Number',\n        FR: 'INSEE Number',\n        CH: 'AHV Number',\n        IT: 'Codice Fiscale',\n        ES: 'DNI',\n        AT: 'Social Security Number',\n        NL: 'BSN',\n        BE: 'National Number',\n        LU: 'Identity Number'\n    }\n    return typeNames[countryCode] || 'ID Number'\n}\n\nfunction getIdLength(countryCode: CountryCode): { minLength: number; maxLength: number } {\n    const lengthMap: Record<CountryCode, { minLength: number; maxLength: number }> = {\n        US: { minLength: 9, maxLength: 11 },\n        CA: { minLength: 9, maxLength: 11 },\n        UK: { minLength: 9, maxLength: 9 },\n        DE: { minLength: 12, maxLength: 15 },\n        FR: { minLength: 13, maxLength: 15 },\n        CH: { minLength: 16, maxLength: 16 },\n        IT: { minLength: 16, maxLength: 16 },\n        ES: { minLength: 9, maxLength: 9 },\n        AT: { minLength: 10, maxLength: 12 },\n        NL: { minLength: 9, maxLength: 9 },\n        BE: { minLength: 15, maxLength: 17 },\n        LU: { minLength: 13, maxLength: 13 }\n    }\n    return lengthMap[countryCode] || { minLength: 8, maxLength: 20 }\n}\n\nfunction getIdExample(countryCode: CountryCode): string {\n    const examples: Record<CountryCode, string> = {\n        US: '(e.g., 123-45-6789)',\n        CA: '(e.g., 123 456 789)',\n        UK: '(e.g., AB123456C)',\n        DE: '(e.g., 12 345678 A 123)',\n        FR: '(e.g., 1234567890123)',\n        CH: '(e.g., 756.1234.5678.90)',\n        IT: '(e.g., RSSMRA85T10A562S)',\n        ES: '(e.g., 12345678Z)',\n        AT: '(e.g., 1234 567890)',\n        NL: '(e.g., 123456789)',\n        BE: '(e.g., 12.34.56-789.01)',\n        LU: '(e.g., 1234567890123)'\n    }\n    return examples[countryCode] || ''\n}\n","import {\n    IValidationConstraintBuilder,\n    ValidationConstraintBuilder\n} from '../../constraint-builder/validation-constraint-builder'\nimport { GenericValidationBuilder } from '../../generic-validation-builder/generic-validation-builder'\nimport { ValidationLocalizeKeys } from '../validation.localize.keys'\n\nexport const eMailValidator = (name: string, required: boolean = true) => {\n    const constraints: IValidationConstraintBuilder<any>[] = []\n\n    if (required) {\n        constraints.push(\n            new ValidationConstraintBuilder<boolean>('required')\n                .setConstraint(true)\n                .setName(name)\n                .setErrorMessage(ValidationLocalizeKeys.emailError)\n                .setGuideMessage(ValidationLocalizeKeys.emailGuide)\n        )\n    }\n\n    // Email pattern validation\n    constraints.push(\n        new ValidationConstraintBuilder<RegExp>('pattern')\n            .setConstraint(/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.emailError)\n            .setGuideMessage(ValidationLocalizeKeys.emailGuide)\n    )\n\n    // Max length for email\n    constraints.push(\n        new ValidationConstraintBuilder<number>('maxLength')\n            .setConstraint(150)\n            .setName(name)\n            .setErrorMessage(ValidationLocalizeKeys.emailError)\n            .setGuideMessage(ValidationLocalizeKeys.emailGuide)\n    )\n\n    return new GenericValidationBuilder().setConstraints(constraints)\n}\n","// Export all validators\nexport { ageValidator } from './age-validator'\nexport { creditCardValidator } from './credit-card-validator'\nexport { currencyValidator } from './currency-validator'\nexport { dateValidator } from './date-validator'\nexport { firstNameValidator } from './first-name-validator'\nexport { fullNameValidator } from './full-name-validator'\nexport { lastNameValidator } from './last-name-validator'\nexport { numericValidator } from './numeric-validator'\nexport { passwordMediumValidator } from './password-medium-validator'\nexport { passwordStrongValidator } from './password-strong-validator'\nexport { phoneValidator } from './phone-validator'\nexport { postalCodeValidator, type PostalCodeRegion } from './postal-code-validator'\nexport { ssnValidator } from './ssn-validator'\nexport { timeValidator } from './time-validator'\nexport { urlValidator } from './url-validator'\nexport { usernameValidator } from './username-validator'\n\n// Country-specific validators\nexport {\n    countryCodeValidator,\n    getCountriesWithSupport,\n    getCountryPatternSummary,\n    getCountryValidationInfo,\n    multiCountryValidator,\n    switzerlandIncludedValidator\n} from './country-validator'\nexport {\n    phoneCountryValidator,\n    phoneMultiCountryValidator,\n    phoneSwitzerlandValidator\n} from './phone-country-validator'\nexport {\n    npaValidator,\n    postalCodeCountryValidator,\n    postalCodeMultiCountryValidator,\n    postalCodeSwitzerlandValidator\n} from './postal-code-country-validator'\nexport {\n    ahvValidator,\n    ssnCountryValidator,\n    ssnMultiCountryValidator,\n    ssnSwitzerlandValidator\n} from './ssn-country-validator'\n\n// Re-export pattern management utilities\nexport { countryMetadata, PatternManager } from '../validation.regex.patterns'\nexport type { CountryCode, ValidationType } from '../validation.regex.patterns'\n\n// Import all validators for the object export\nimport { ageValidator } from './age-validator'\nimport { creditCardValidator } from './credit-card-validator'\nimport { currencyValidator } from './currency-validator'\nimport { dateValidator } from './date-validator'\nimport { firstNameValidator } from './first-name-validator'\nimport { fullNameValidator } from './full-name-validator'\nimport { lastNameValidator } from './last-name-validator'\nimport { numericValidator } from './numeric-validator'\nimport { passwordMediumValidator } from './password-medium-validator'\nimport { passwordStrongValidator } from './password-strong-validator'\nimport { phoneValidator } from './phone-validator'\nimport { postalCodeValidator } from './postal-code-validator'\nimport { ssnValidator } from './ssn-validator'\nimport { timeValidator } from './time-validator'\nimport { urlValidator } from './url-validator'\nimport { usernameValidator } from './username-validator'\n\n// Import country-specific validators\nimport { eMailValidator } from '../presets/e-mail-builder'\nimport {\n    countryCodeValidator,\n    multiCountryValidator,\n    switzerlandIncludedValidator\n} from './country-validator'\nimport {\n    phoneCountryValidator,\n    phoneMultiCountryValidator,\n    phoneSwitzerlandValidator\n} from './phone-country-validator'\nimport {\n    npaValidator,\n    postalCodeCountryValidator,\n    postalCodeMultiCountryValidator,\n    postalCodeSwitzerlandValidator\n} from './postal-code-country-validator'\nimport {\n    ahvValidator,\n    ssnCountryValidator,\n    ssnMultiCountryValidator,\n    ssnSwitzerlandValidator\n} from './ssn-country-validator'\n\nexport const Validators = {\n    phone: phoneValidator,\n    firstName: firstNameValidator,\n    lastName: lastNameValidator,\n    fullName: fullNameValidator,\n    passwordStrong: passwordStrongValidator,\n    passwordMedium: passwordMediumValidator,\n    url: urlValidator,\n    creditCard: creditCardValidator,\n    postalCode: postalCodeValidator,\n    ssn: ssnValidator,\n    currency: currencyValidator,\n    age: ageValidator,\n    username: usernameValidator,\n    time: timeValidator,\n    numeric: numericValidator,\n    date: dateValidator,\n    email: eMailValidator,\n    // Country-specific validators\n    phoneCountry: phoneCountryValidator,\n    phoneMultiCountry: phoneMultiCountryValidator,\n    phoneSwitzerland: phoneSwitzerlandValidator,\n    postalCodeCountry: postalCodeCountryValidator,\n    postalCodeMultiCountry: postalCodeMultiCountryValidator,\n    postalCodeSwitzerland: postalCodeSwitzerlandValidator,\n    npa: npaValidator,\n    ssnCountry: ssnCountryValidator,\n    ssnMultiCountry: ssnMultiCountryValidator,\n    ahv: ahvValidator,\n    ssnSwitzerland: ssnSwitzerlandValidator,\n    countryCode: countryCodeValidator,\n    multiCountry: multiCountryValidator,\n    switzerlandIncluded: switzerlandIncludedValidator\n}\n","export enum ValidationSchemaBuildersEnum {\n    BaseEmptyBuilder = 'BaseEmptyBuilder',\n    RequiredBuilder = 'RequiredBuilder',\n    MinBuilder = 'MinBuilder',\n    MaxBuilder = 'MaxBuilder',\n    MinMaxBuilder = 'MinMaxBuilder',\n    MinAndMinLengthBuilder = 'MinAndMinLengthBuilder',\n    MaxAndMinLengthBuilder = 'MaxAndMinLengthBuilder',\n    MinMaxAndMinLengthBuilder = 'MinMaxAndMinLengthBuilder',\n\n    MinAndMaxLengthBuilder = 'MinAndMaxLengthBuilder',\n    MinMaxAndMaxLengthBuilder = 'MinMaxAndMaxLengthBuilder',\n\n    MaxAndMaxLengthBuilder = 'MaxAndMaxLengthBuilder',\n    MinMinLengthAndMaxLengthBuilder = 'MinMinLengthAndMaxLengthBuilder',\n\n    MaxMinLengthAndMaxLengthBuilder = 'MaxMinLengthAndMaxLengthBuilder',\n    MinMaxMinLengthAndMaxLengthBuilder = 'MinMaxMinLengthAndMaxLengthBuilder',\n\n    MinLengthBuilder = 'MinLengthBuilder',\n    MaxLengthBuilder = 'MaxLengthBuilder',\n    MinLengthAndMaxLengthBuilder = 'MinLengthAndMaxLengthBuilder'\n}\n","import { ValueManager } from './value-manager'\nimport { IValueManager } from './value-manager.types'\n\n/**\n * Creates a mock ValueManager with optional method overrides for testing.\n * @param overrides Partial implementation to override default ValueManager methods.\n */\nexport function createValueManagerMock(overrides: Partial<IValueManager> = {}): IValueManager {\n    const mock = new (ValueManager as any)() as IValueManager\n    return Object.assign(mock, overrides)\n}\n","import { ObservableSubject } from './observable-subject'\nimport { TObservableFunction } from './observable-subject.types'\n\n/**\n * Helper to build a mock ObservableSubject for testing.\n * Allows easy setup of observers and spying on trigger calls.\n */\nexport function createObservableSubjectMock({\n    strongObservers = [],\n    weakObservers = []\n}: {\n    strongObservers?: TObservableFunction[]\n    weakObservers?: TObservableFunction[]\n} = {}) {\n    // @ts-ignore\n    const subject = new ObservableSubject()\n    strongObservers.forEach((fn) => subject.subscribe(fn, false))\n    weakObservers.forEach((fn) => subject.subscribe(fn, true))\n    return subject\n}\n"],"names":["defaultValue","value","cloned","nullable","optional","SchemaValidationError","error","SchemaErrorCode","StringValidationType","NumberValidationType","DefaultErrorMessages","expected","min","type","max","values","createValidationError","message","code","path","createTypeError","parse","result","refine","check","options","safeParse","parsed","transform","refinement","err","validationErr","fn","SchemaBase","_parse","success","data","failure","length","val","nonempty","ArraySchema","element","item","index","falseMethod","trueMethod","BooleanSchema","date","DateSchema","EnumSchema","input","LiteralSchema","debounce","milliseconds","finite","int","multipleOf","negative","nonnegative","nonpositive","positive","safe","NumberSchema","extend","schema","newShape","ObjectSchema","merge","omit","keys","omitSet","key","partial","pick","required","shape","objValue","errors","fieldSchema","fieldPath","nestedErr","validationError","propertyValue","RecordSchema","keySchema","valueSchema","parsedKey","parsedValue","ahv","validateAHV","email","EMAIL_REGEX","pattern","regex","phone","countryCode","validator","PHONE_VALIDATORS","postalCode","POSTAL_CODE_VALIDATORS","toLowerCase","toUpperCase","trim","url","URL_REGEX","AHV_REGEX","digits","sum","i","StringSchema","UnionSchema","f","ValidatorPresetRegistry","preset","name","presetRegistry","SFormularManager","createScope","ServiceManager","logManager","tracker","source","_messageConsoleFactory","_messageTrackerFactory","e","assertNever","x","dispose","identifier","instance","findServiceDescriptor","_a","getServiceName","isRegistered","lazy","parameters","resolved","service","register","factory","descriptor","LazyDependencyProxy","container","dependency","target","prop","receiver","registerClass","constructor","lazyDependencies","lazyDependency","registerInstance","resolve","throwIfDisposed","tryResolve","stack","id","validateNoCycles","visited","visiting","visit","cycle","parent","_toFlags","fieldName","emitterName","types","action","newEvent","fieldRef","SConfigurationManager","SDomManager","DomUtils","useDomManager","domManagerInstance","_domManager","useNotificationManager","notifierInstance","SStyleManager","defaultFieldInputCSSClassName","defaultFieldStateFlags","useStyleManager","styleManager","_styleManager","useTrackingManager","trackerInstance","SValidationManager","ValidationErrorsCodes","newValidationResult","state","triggerEventTypes","guide","newValidationResults","isValid","results","formId","useValidationManager","validationStrategyInstance","_validationManager","SValueManager","setParserStrategy","concernedTypes","fieldValueProperty","setter","getter","useValueManager","valueManagerInstance","_valueManager","checkInitialized","output","_b","_d","_c","clear","enable","enabled","focus","onBlurHandle","handleOnBlur","onClearHandle","handleOnClear","onFocusHandle","handleOnFocus","onKeyPressHandle","handleOnKeyPress","onKeyUpHandle","handleOnKeyUp","shouldInterruptByBeforeValidation","functionName","_e","_f","shouldInterruptByFirstSubmitRule","isRequiredDataMissing","hasValidationManager","context","runAfterValidationHook","handleValidationError","triggerUiUpdateNotification","baseInput","triggerValidationChangeNotification","setFieldBusyState","isBusy","storeValidationResults","logValidationDebug","aria","AriaHelper","arias","a","o","updateValidationStyles","hasErrors","updateAriaAttributes","ValidationProcessor","handleValidation","processor","handleValidationAsync","reject","hasChanges","callback","newAssert","isTrue","accept","assertion","toString","process","ExceptionManager","assertions","newNotificationVisitor","event","method","notification","owner","eventHandler","eventType","abstractInitializer","fieldInput","setup","notifiers","n","initialize","em","initializeProperties","refreshUi","ref","setFocus","setInputBusy","InputBase","serviceManager","validationManagerInstance","config","resolveDelay","fallback","onChangeConfig","globalInputDelay","onValidateConfig","globalOnValidateDelay","onUiUpdateConfig","globalOnUiUpdateDelay","onClickConfig","notifyChange","_value","newValue","k","_focus","SInputBase","InputResolver","field","referencer","optionReferencer","assembleEventsHandlers","mergedHandlers","handlers","handler","build","hasMask","eleEvts","ariaAttrs","buildLabel","option","buildOption","registerAria","onBlur","registerBlur","custom","onChangedHandle","onChange","inputElement","registerChange","onClick","registerClick","onClickOption","optionId","registerClickOption","registerEvent","registerEvents","customHandlers","customHandler","onFocus","registerFocus","onKeyPress","registerKeyPress","onKeyUp","registerKeyUp","customEvent","DomRegisterBuilder","lableId","describedbyId","CheckBoxInput","SCheckBoxBaseInput","onClickHandle","_h","_g","ClickBaseInput","SClickBaseInput","setOpenState","DrawerBaseInput","SDrawerBaseInput","processMaskedValue","mask","processedValue","oldValue","oldCursorPos","inputValue","digitsBeforeCursor","rawValue","formattedValue","newCursorPos","findPositionAfterNthDigit","digitCount","foundDigits","currentValue","cursorPos","canAcceptDigitAtPosition","currentDigits","maxDigits","char","maskPos","valuePos","memoize","objectCache","primitiveCache","args","firstArg","restArgs","cacheForObject","primitiveKey","computeAriaAttributes","ei","MaskedBaseInput","actualMask","SMaskedBaseInput","handleOnChanged","NumericBaseInput","SNumericBaseInput","checkOptionsInitialized","intitializedOptions","getOptionById","getOptionBySequenceId","sequenceId","getOptionByValue","getSelectedValue","tryGetOptionByIdOrValue","tryGetOptionBySequenceIdThenIdOrValue","OptionBaseInput","SOptionBaseInput","refOption","registerLabel","registerOption","RadioBaseInput","SRadioBaseInput","onSelectHandle","handleOnSelected","onSelectItem","SelectBaseInput","SSelectBaseInput","labelId","TextBaseInput","STextBaseInput","NotificationPriorityEnum","NotificationPriority","SNotificationManager","SAutoTrackerNotificationManager","SServiceManager","STrackingManager","STrackingOutputProvider","newDtId","dts","newTrackingData","currentTimestamp","setupBaseInputClasses","sm","defaultOutputTrackingProvider","d","consoleTrackingProvider","valueIsNullOrUndefined","ValidatorMaxLengthStrategy","validatorMaxLengthStrategy","ValidatorMaxStrategy","validatorMaxStrategy","ValidatorMinLengthStrategy","validatorMinLengthStrategy","ValidatorMinStrategy","validatorMinStrategy","ValidatorRequiredStrategy","validatorRequiredStrategy","ValidatorPatternStrategy","hasValue","regexp","valueToBeTested","validatorPatternStrategy","InputTypesNamesEnum","booleanTypes","stringTypes","numberTypes","optionBaseedNumericTypes","dateTypes","isBoolean","booleanGetter","extInput","booleanSetter","booleanParserStrategy","PrimitiveDataTypes","InputClassStatesValuesEnum","InputClassStatesNamesEnum","InputClassStatesValuesArray","InputClassStatesNamesArray","MissingPropEnum","ddMMYYYYRegex","MMddYYYYRegex","yyyyMMDDRegex","DateFormatsEnum","validateDateFormat","getPaddedNumber","num","count","DateObject","separator","day","month","year","format","_year","_month","_day","dateObject","isValidFormat","mapObjectToFields","dataObject","forceShouldValidate","outputFields","targetField","dateObjectDisplay","b","mapFieldsToObject","fields","outputItem","isMissing","property","componentName","mapSchemaToFieldDescriptor","scheme","newF","tryConvertINDateToDateObject","dte","formatDate","getCorrectMonthNumber","getDayNames","getDayIndex","getDayIndexByName","getDayName","getDayNameByIndex","getDayNumber","dateStr","getSystemDateSeparator","getMonthDays","_","getMonthNames","getMonthIndex","getMonthIndexByName","getMonthName","getMonthNameByIndex","getTs","getYearMonths","getYears","start","end","tryConvertStringToDateObject","defaultExtendsEventObject","emptyInitializeMethod","EventsEnum","defaultTriggers","getTranslationBuilder","translations","token1","token2","data2","translation","t","getTranslations","ApiError","__super","__publicField","ErrorIndex","y","FieldError","GenErrorIds","GeneralError","origin","inner","newFieldError","newFieldGuide","memoizeHandler","SFieldDescriptor","clone","tempInstance","setDefaultValue","setExpectedValue","expectedValue","setId","setMask","setName","setOptionData","setTriggerKeyWord","triggerKeyWord","setTypeInput","setValidationData","shouldValidate","validationData","FieldSchemaBuilder","addBuilders","builders","create","validationOptions","_innerBuilder","FieldSchemaFactory","capitalizeFirstLetter","word","w","conditionalClass","classes","newIFClass","classN","addIf","ifClass","isBigInt","isDate","isDateObject","isFunction","isNDate","isNullEmptyOrUndefined","isNullOrEmpty","isNumber","isString","newNotificationVisitorName","getScreenOrientationTypeName","orientation","ScreenOrientationEnum","ScreenOrientationArray","shallowCopy","originalFunc","copiedFunc","proto","copy","descriptors","stringIsDate","toPascal","dateGetter","isValidDateString","dateString","parts","part1","part2","part3","num1","num2","num3","dateSetter","dateParserStrategy","optionGetter","optionItem","optionSetter","numericOptionParserStrategy","numericGetter","numericSetter","numericParserStrategy","selectGetter","selectSetter","selectOptionParserStrategy","stringGetter","stringSetter","stringParserStrategy","STrackingStrategyService","TrackingStrategyService","_strategies","strategies","strategy","vm","SValidationStrategyService","ValidationStrategyService","SValidationTriggerService","ValidationTriggerService","_triggers","triggers","fm","form","trigger","currentTriggers","SValueStrategyService","ValueStrategyService","setupBaseFieldsConfiguration","validationTriggerService","validationService","valueStrategyService","trackingStrategyService","getConfigByName","names","current","lastElement","foundKey","defaultConfiguration","getDefaultConfiguration","loadJson","readFile","__viteBrowserExternal","response","json","mergeConfigurationWithDefaults","_i","_j","_k","printConfiguration","tableData","setConfiguration","existingIndex","c","useConfiguration","configuration","validateConfiguration","ConfigurationManager","defaultConfigurationJson","defaultConfigJson","defaultConfigurationJsonString","mockServiceManager","basicUsageExample","configManager","defaultConfig","customConfigurationExample","productionConfig","validatedConfig","activeConfig","loadJsonConfigurationExample","getConfigurationValuesExample","emailPattern","drawerComponent","primaryCommand","formBehavior","multiEnvironmentExample","devConfig","stagingConfig","prodConfig","validatedDev","validatedStaging","validatedProd","localizationExample","multiCultureConfig","defaultCulture","tokenReplacements","validationPatternsExample","validationConfig","passwordPattern","creditCardPattern","runtimeConfigurationExample","updatedConfig","errorHandlingExample","invalidConfig","nullConfig","runAllExamples","examples","dmAddArias","dmAriaSet","dmClear","dmExists","dmGet","dmRegister","dmRegisterById","_tmpElement","dmSetChecked","dmSetClass","rules","dmSetEnabled","ele","dmSetFocus","dmSetSelected","selectionValue","dmSetValue","dmUpdateAria","ariaName","ariaValue","extensionName","extension","hasExtension","DomManager","rawLabelId","rawDescribedById","latestCalls","clearCurrentCall","call","removeCallByType","takeLatest","timeoutId","triggenrName","debounceTrigger","channelOrDelay","delay","isChannelBased","channel","actualDelay","debounceKey","channelObservers","obs","subscribe","channelOrFn","fnOrUseWeak","useWeak","useWeakRef","unSubscribe","fnOrForWeak","forWeak","isWeak","unSubscribeAll","ObservableSubject","getKey","notify","exisingNotifier","batchNotify","notifications","priorityNotifications","queue","getCallByType","debounceNotify","notifier","callEvent","dismiss","flushPendingNotifications","processPriorityBatches","priorities","priority","processSimpleBatch","currentBatch","processNotificationBatch","batch","groupedEvents","events","groupEventsByType","grouped","processEventGroup","channelId","getRegisteredNotifierNames","p","scheduleBatch","processBatch","setBatchConfig","NotificationManager","autoTracker","classNames","userClassName","flags","pristineFlag","dirtyFlag","focusFlag","validFlag","enabledFlag","busyFlag","finalClassName","get","getFlagsList","getFlagsObject","getActiveClass","className","getInactiveClass","getClass","isActive","update","classValue","StyleManager","addProviders","providers","getTrackingDate","internalCritical","dt","internalError","internalInfo","internalWarning","print","provider","printAll","setTrackingActive","active","TrackingManager","addValidationStrategies","keyWord","addValidationStrategy","validate","reset","cached","validateAsync","validateMany","validateManyAsync","res","ValidationManager","acceptValueStrategies","parsers","addValueStrategies","parser","discriminatedInput","validationResults","getAsString","s","valueOut","getValue","purpose","purposeType","setValue","setValueFromHtmlElement","ValueManager","SInputConfigProvider","InputConfigProvider","SFieldDescriptorService","FieldDescriptorService","setupManagers","execute","InitializationDelegate","setNext","initializerDelegate","manager","intitializer","addInitializer","initializer","newDelegate","executeSequences","InitializationManager","params","sequenceInitializer","dependencies","IM","dep","baseDependencyList","fieldBaseInput","rest","SBaseInputService","BaseInputService","baseInputInstance","domManager","notificationManager","trackingManaget","SCheckInputService","CheckInputService","_baseInput","_clickInput","_checkInput","SRadioInputService","RadioInputService","_optionInput","_radioInput","SSelectInputService","SelectInputService","_selectInput","STextInputService","TextInputService","_textInput","SClickInputService","ClickInputService","SMaskedInputService","MaskedInputService","_maskedInput","SOptionInputService","OptionInputService","SInputFactory","InputFactory","builderCache","builder","cbs","sis","srs","sms","sts","setupInputsFactory","setupInputsRegistry","LoadingStatusEnum","addFields","flds","fld","checkAllFieldsAreValid","checkChanges","changes","originalField","originalValue","clearField","getData","getErrors","getField","getFormFlags","isDirty","observe","introspectionEnabled","debugStreamMaxSize","wrappedCallback","debugStream","subscriptions","callbacks","idx","preValidateField","setIsBusy","status","mode","hasValidationOptions","submit","LoadingStatus","validFields","subscriptionName","subscriptionId","unobserveAll","updateField","validateField","validateForm","Formular","createEmpty","frm","createFromDescriptors","debugStreamSize","createFromSchema","getForm","FormularManager","notificationManagerInstance","setupFormularManager","ServiceManagerFactory","safeOptions","includeCoreManagers","includeFormularManager","includeInputEngine","includeBaseConfigurations","customSetup","skipValidation","define_process_env_default","SetupHelpers","DirectSubmissionStrategy","submitFn","ContextSubmissionStrategy","contextChecks","FormSubmissionError","FormDismissedError","inferInputType","fs","extractValidationOptions","msg","schemaToDescriptors","defaultValues","inputType","debounceDelay","createForm","formularManager","wrappedSubmit","originalSubmit","createFormFromPreset","presetName","createMockDomManager","overrides","initConfig","createInitializationManagerMock","AbstractServiceBase","ServiceLocator","cache","ValidationConstraintTypeEnum","ValidationConstraintFactory","errorMessage","guideMessage","ValidationConstraintBuilder","constraint","createValidationConstraints","ValidationPresets","minLength","maxLength","cloneInstance","GenericValidationBuilder","constraints","maxContainer","minContainer","minLengthContainer","maxLengthContainer","patternContainer","customContainer","requiredContainer","createValidationManagerMock","ValidationLocalizeKeys","MaxBuilder","MaxLengthBuilder","MinBuilder","MinLengthBuilder","PatternBuilder","RequiredBuilder","MaxAndMaxLengthBuilder","maxValue","MaxAndMinLengthBuilder","MinAndMaxLengthBuilder","minValue","MinAndMinLengthBuilder","MinLengthAndMaxLengthBuilder","MinMaxBuilder","MaxMinLengthAndMaxLengthBuilder","MinMaxAndMaxLengthBuilder","MinMaxAndMinLengthBuilder","MinMinLengthAndMaxLengthBuilder","MinMaxMinLengthAndMaxLengthBuilder","minMaxDatesBuilder","minDate","maxDate","minMaxNameBuilder","numericOnly","namesPattern","dateEuPattern","dateIso8601Pattern","eMailPattern","phonePattern","phoneSimplePattern","phonePatterns","firstNamePattern","lastNamePattern","fullNamePattern","passwordStrongPattern","passwordMediumPattern","urlPattern","postalCodeUSPattern","postalCodeCanadaPattern","postalCodeUKPattern","postalCodePatterns","ssnPattern","ssnPatterns","currencyPattern","timePattern","time12HourPattern","agePattern","usernamePattern","countryMetadata","PatternManager","countryCodes","patterns","ageValidator","creditCardValidator","currencyValidator","dateValidator","firstNameValidator","fullNameValidator","lastNameValidator","numericValidator","passwordMediumValidator","passwordStrongValidator","phoneValidator","postalCodeValidator","region","ssnValidator","timeValidator","urlValidator","usernameValidator","countryCodeValidator","supportedTypes","availableCountries","getCountriesWithSupport","countryPattern","multiCountryValidator","minCountries","maxCountries","switzerlandIncludedValidator","country","getCountryValidationInfo","getCountryPatternSummary","getCountryExamples","phoneCountryValidator","countryName","phonePrefix","getMinPhoneLength","getMaxPhoneLength","phoneMultiCountryValidator","countryNames","multiPattern","phoneSwitzerlandValidator","postalCodeCountryValidator","getPostalCodeExample","getPostalCodeLength","postalCodeMultiCountryValidator","postalCodeSwitzerlandValidator","npaValidator","ssnCountryValidator","idTypeName","getIdTypeName","getIdExample","getIdLength","ssnMultiCountryValidator","ahvValidator","ssnSwitzerlandValidator","eMailValidator","Validators","ValidationSchemaBuildersEnum","createValueManagerMock","mock","createObservableSubjectMock","strongObservers","weakObservers","subject"],"mappings":"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"}