{"version":3,"file":"formular-dev.mjs","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","_b","_c","_d","output","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","_g","_h","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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"}