import { getAsyncLifecycle, defineConfigSchema, getSyncLifecycle } from '@openmrs/esm-framework';
import { configSchema } from './config-schema';
import { createDashboardLink } from '@openmrs/esm-patient-common-lib';
import { kppDashboardMeta } from './dashboard.meta';

const moduleName = '@icap-ethiopia/esm-kpp-app';

const options = {
  featureName: 'kpp',
  moduleName,
};

export const importTranslation = require.context('../translations', false, /.json$/, 'lazy');

export function startupApp() {
  defineConfigSchema(moduleName, configSchema);
}

export const phrh = getAsyncLifecycle(() => import('./key-priority-population/index'), options);
export const root = getAsyncLifecycle(() => import('./root.component'), options);

export const phrhEsmMenu = getSyncLifecycle(
  createDashboardLink({
    ...kppDashboardMeta,
    moduleName,
  }),
  options,
);

export const snsForm = getAsyncLifecycle(() => import('./forms/sns-form'), options);
export const kppForm = getAsyncLifecycle(() => import('./forms/kpp-form'), options);
export const enrolmentForm = getAsyncLifecycle(() => import('./forms/enrollment-form'), options);

export const encounterDeleteConfirmationDialog = getAsyncLifecycle(
  () => import('./key-priority-population/data-table/delete-encounter.modal'),
  options,
);
