﻿import { ApplicationConfig, provideBrowserGlobalErrorListeners } from '@angular/core';
import { provideNativeDateAdapter } from '@angular/material/core';
import { provideRouter } from '@angular/router';
import { routes } from './app.routes';
import { FieldActionContext } from '@preforms/angular/core';
import { FIELD_ACTIONS } from '@preforms/angular/core';
import { generatePassword } from './utils/generate-password';

export const appConfig: ApplicationConfig = {
  providers: [
    provideBrowserGlobalErrorListeners(),
    provideNativeDateAdapter(),
    provideRouter(routes),
    {
      provide: FIELD_ACTIONS,
      useValue: {
        randomize: (ctx: FieldActionContext) => {
          // Example: set a random value
          if (ctx.control && typeof ctx.control.setValue === 'function') {
            ctx.control.setValue(Math.floor(Math.random() * 100));
          }
        },
        uppercase: (ctx: FieldActionContext) => {
          const val = ctx.control.value;
          ctx.control.setValue(typeof val === 'string' ? val.toUpperCase() : val);
        },
        generatePassword: (ctx: FieldActionContext) => {
          const newPwd = generatePassword(12, {
            uppercase: true,
            lowercase: true,
            numbers: true,
            symbols: true,
          });
          ctx.control.setValue(newPwd);
        },
      },
    },
  ],
};
