{"version":3,"sources":["../src/SchemaQueries.ts","../src/components/css.ts","../src/components/Spinner.tsx","../src/PrismaTable/language.ts","../src/PrismaTable/Context.ts","../src/components/Modal.tsx","../src/components/Checkbox.tsx","../src/components/Select.tsx","../src/PrismaTable/QueryDocument.ts","../src/PrismaTable/Table/utils.ts","../src/PrismaTable/useSchema.ts","../src/PrismaTable/Form/Inputs.tsx","../src/PrismaTable/Form/useActions.ts","../src/PrismaTable/Form/index.tsx","../src/PrismaTable/EditRecord.tsx","../src/PrismaTable/Table/Columns.tsx","../src/PrismaTable/Table/useFilter.ts","../src/PrismaTable/Table/Filters.tsx","../src/PrismaTable/useListConnectToOne.ts","../src/PrismaTable/Table/ListConnect.tsx","../src/PrismaTable/Table/index.tsx","../src/PrismaTable/Table/useFilterAndSort.ts","../src/PrismaTable/dynamicTable.tsx","../src/PrismaTable/index.tsx","../src/lib/dnd.ts","../src/Settings/UpdateField.tsx","../src/Settings/UpdateModel.tsx","../src/Settings/index.tsx"],"names":["gql","jsx","jsxs","React","Fragment","Transition","Dialog","TransitionChild","DialogPanel","Listbox","ListboxButton","ArrowsUpDownIcon","ListboxOptions","ListboxOption","CheckIcon","field","fields","tag","useContext","useFormContext","useState","useController","useQuery","MagnifyingGlassIcon","XCircleIcon","value","useMutation","useForm","FormProvider","useMemo","useLazyQuery","useEffect","model","option","TrashIcon","MagnifyingGlassCircleIcon","useReactTable","getCoreRowModel","getSortedRowModel","getPaginationRowModel","filters","PlusIcon","PencilSquareIcon","EyeIcon","Popover","PopoverButton","PopoverPanel","flexRender","ArrowDownIcon","ArrowUpIcon","ChevronDoubleRightIcon","ChevronRightIcon","ChevronLeftIcon","ChevronDoubleLeftIcon","useCallback","item","pageSize","useSensors","useSensor","MouseSensor","TouchSensor","KeyboardSensor","sortableKeyboardCoordinates","useRef","useSortable","CSS","Bars3Icon","ChevronUpIcon","ChevronDownIcon","sortedFields","arrayMove","DndContext","closestCenter","SortableContext","verticalListSortingStrategy"],"mappings":"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","file":"index.cjs","sourcesContent":["import gql from 'graphql-tag';\n\nconst fieldFragment = gql`\n  fragment Field on AdminField {\n    id\n    name\n    title\n    type\n    list\n    kind\n    read\n    required\n    isId\n    unique\n    create\n    order\n    update\n    sort\n    filter\n    editor\n    upload\n    relationField\n  }\n`;\n\nconst modelFragment = gql`\n  fragment Model on AdminModel {\n    id\n    name\n    create\n    delete\n    update\n    idField\n    displayFields\n    fields {\n      ...Field\n    }\n  }\n  ${fieldFragment}\n`;\n\nexport const GET_SCHEMA = gql`\n  query getSchema {\n    getSchema {\n      models {\n        ...Model\n      }\n      enums {\n        name\n        fields\n      }\n    }\n  }\n  ${modelFragment}\n`;\n\nexport const UPDATE_MODEL = gql`\n  mutation updateModel($id: String!, $data: UpdateModelInput!) {\n    updateModel(id: $id, data: $data) {\n      ...Model\n    }\n  }\n  ${modelFragment}\n`;\n\nexport const UPDATE_FIELD = gql`\n  mutation updateField($id: String!, $modelId: String!, $data: UpdateFieldInput!) {\n    updateField(id: $id, modelId: $modelId, data: $data) {\n      ...Field\n    }\n  }\n  ${fieldFragment}\n`;\n","export const inputClasses =\n  'focus:ring-indigo-500 focus:border-indigo-500 focus:bg-white shadow-sm placeholder-gray-300 border border-gray-300 rounded-md text-gray-600 bg-gray-50 py-2 px-4 w-full';\n\nexport const buttonClasses =\n  'disabled:opacity-50 disabled:cursor-not-allowed font-semibold uppercase  outline-none focus:outline-none ease-linear transition-all duration-150 ';\n\nexport function classNames(...classes: string[]) {\n  return classes.filter(Boolean).join(' ');\n}\n","import type React from 'react';\nimport { classNames } from './css';\n\nconst Spinner: React.FC<{ h?: string; w?: string }> = ({ h, w }) => {\n  return (\n    <div\n      style={{ backgroundColor: 'rgba(143, 155, 179, 0.25)' }}\n      className=\"opacity-100 absolute top-0 right-0 left-0 bottom-0 overflow-hidden flex justify-center items-center visible z-50\"\n    >\n      <svg\n        className={classNames('animate-spin -ml-1 mr-3 text-gray-700', h ? h : 'h-10', w ? w : 'w-10')}\n        xmlns=\"http://www.w3.org/2000/svg\"\n        fill=\"none\"\n        viewBox=\"0 0 24 24\"\n      >\n        <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n        <path\n          className=\"opacity-75\"\n          fill=\"currentColor\"\n          d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n        />\n      </svg>\n    </div>\n  );\n};\n\nexport default Spinner;\n","export default {\n  yes: 'yes',\n  no: 'no',\n  all: 'All',\n  equals: 'equals',\n  in: 'in',\n  notIn: 'notIn',\n  lt: 'lt',\n  lte: 'lte',\n  gt: 'gt',\n  gte: 'gte',\n  not: 'not',\n  contains: 'contains',\n  startsWith: 'startsWith',\n  endsWith: 'endsWith',\n  addFilter: 'Add a new filter',\n  nonFilterMsg: 'Use filters to narrow down your data. Multiple filters show results at their intersection (AND).',\n  deleteConfirm: 'Are you sure you want to delete this record ?',\n  select: 'Select',\n  actions: 'Actions',\n  relation: 'Relation',\n  viewAll: 'View All',\n  viewRelated: 'View Related',\n  connected: 'Connected',\n  connect: 'Connect',\n  disConnect: 'DisConnect',\n  editRow: 'Edit Row',\n  viewRow: 'View Row',\n  deleteRow: 'Delete Row',\n  showing: 'Showing',\n  of: 'of',\n  results: 'results',\n  goToFirstPage: 'Go to first page',\n  goToLastPage: 'Go to last page',\n  goPageNumber: 'Go Page Number',\n  setPageSize: 'Set page size ',\n  filter: 'Filter',\n  save: 'Save',\n  cancel: 'Cancel',\n  close: 'Close',\n  create: 'Create',\n  update: 'Update',\n  view: 'View',\n  isRequired: ' is required',\n  show: 'SHOW',\n};\n","import React from 'react';\nimport type { ContextProps } from '../index';\nimport defaultLanguage from './language';\n\nexport const defaultSettings = {\n  pagesPath: '/admin/models/',\n  pageSize: 10,\n  pageSizeOptions: [10, 20, 30, 40, 50, 100],\n  paginationOptions: 4,\n  push: typeof window !== 'undefined' ? window.location.replace : () => '',\n  query: {},\n};\n\nconst initialContext: ContextProps = {\n  dir: 'ltr',\n  lang: defaultLanguage,\n  schema: {\n    models: [],\n    enums: [],\n  },\n  ...defaultSettings,\n};\n\nexport const TableContext = React.createContext<ContextProps>(initialContext);\n\nexport const useTableContext = () => {\n  const context = React.useContext(TableContext);\n  if (!context) {\n    throw new Error('useTableContext must be used within a TableContext');\n  }\n  return context;\n};\n","import { Dialog, DialogPanel, Transition, TransitionChild } from '@headlessui/react';\nimport type React from 'react';\n\ninterface ModalProps {\n  on: boolean;\n  toggle: () => void;\n}\n\nconst Modal: React.FC<React.PropsWithChildren<ModalProps>> = ({ children, on, toggle }) => {\n  if (!on) return <></>;\n  return (\n    <Transition as={Dialog} className=\"relative z-50\" show={on} onClose={toggle}>\n      <TransitionChild\n        enter=\"ease-out duration-300\"\n        enterFrom=\"opacity-0\"\n        enterTo=\"opacity-100\"\n        leave=\"ease-in duration-200\"\n        leaveFrom=\"opacity-100\"\n        leaveTo=\"opacity-0\"\n      >\n        <div className=\"fixed inset-0 bg-black/30\" aria-hidden=\"true\" />\n      </TransitionChild>\n\n      <div className=\"fixed inset-0 overflow-y-auto\">\n        <div className=\"flex min-h-screen items-center justify-center px-4 pb-20 pt-4\">\n          <TransitionChild\n            enter=\"ease-out duration-300\"\n            enterFrom=\"opacity-0 scale-95\"\n            enterTo=\"opacity-100 scale-100\"\n            leave=\"ease-in duration-200\"\n            leaveFrom=\"opacity-100 scale-100\"\n            leaveTo=\"opacity-0 scale-95\"\n          >\n            <DialogPanel className=\"inline-block transform align-middle transition-all w-full lg:w-5/6\">\n              {children}\n            </DialogPanel>\n          </TransitionChild>\n        </div>\n      </div>\n    </Transition>\n  );\n};\n\nexport default Modal;\n","import type React from 'react';\nimport { classNames } from './css';\n\ninterface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {\n  id?: string;\n  label?: string;\n  indeterminate?: boolean;\n}\n\nconst Checkbox: React.FC<CheckboxProps> = ({ id, label, indeterminate, className, ...rest }) => {\n  return (\n    <label htmlFor={id} className={classNames(label ? '' : 'justify-center', 'flex items-center space-x-3')}>\n      <input\n        id={id}\n        type=\"checkbox\"\n        className={classNames(\n          className || '',\n          'form-checkbox rounded text-blue-600 h-5 w-5 outline-none focus:outline-none focus:ring-1 focus:ring-opacity-25 focus:ring-offset-blue-300',\n        )}\n        style={\n          indeterminate\n            ? {\n                borderColor: 'transparent',\n                backgroundColor: 'currentColor',\n                backgroundSize: '100% 100%,',\n                backgroundPosition: 'center',\n                backgroundRepeat: 'no-repeat',\n                backgroundImage:\n                  \"url(\\\"data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='8' height='2' x='4' y='7' rx='1'/%3E%3C/svg%3E\\\")\",\n              }\n            : {}\n        }\n        {...rest}\n      />\n      {label && <span className=\"text-gray-600 whitespace-nowrap pr-1.5\">{label}</span>}\n    </label>\n  );\n};\n\nexport default Checkbox;\n","import { Listbox, ListboxButton, ListboxOption, ListboxOptions, Transition } from '@headlessui/react';\nimport { ArrowsUpDownIcon, CheckIcon } from '@heroicons/react/24/solid';\nimport { classNames } from './css';\n\nexport interface Option {\n  name: string;\n  id: string;\n  unavailable?: boolean;\n}\n\n// Generic props - TValue can be Option or Option[]\ninterface SelectProps<TValue extends Option | Option[]> {\n  options: Option[];\n  value?: TValue;\n  onChange: (value: TValue) => void;\n  disabled?: boolean;\n  className?: string;\n  dir?: string;\n  popupFullWidth?: boolean;\n  multiple?: TValue extends Option[] ? true : false;\n}\n\nfunction Select<TValue extends Option | Option[]>({\n  options,\n  value,\n  className,\n  onChange,\n  disabled,\n  dir,\n  popupFullWidth,\n  multiple,\n}: SelectProps<TValue>) {\n  return (\n    <Listbox\n      as=\"div\"\n      style={{ minWidth: '120px' }}\n      className={classNames(className || '', 'space-y-1')}\n      value={value}\n      onChange={onChange}\n      disabled={disabled}\n      multiple={multiple}\n    >\n      {({ open }) => (\n        <>\n          <div className=\"relative\">\n            <span className=\"inline-block w-full rounded-md shadow-sm\">\n              <ListboxButton\n                className={classNames(\n                  'cursor-default flex items-center justify-between relative w-full rounded-md border border-gray-300 font-bold text-gray-500 bg-gray-50 px-3 py-2',\n                  dir === 'rtl' ? 'text-right' : 'text-left',\n                  'focus:ring-indigo-500 focus:border-indigo-500 focus:bg-white transition ease-in-out duration-150 sm:text-sm sm:leading-5',\n                )}\n              >\n                <span className=\"block truncate\">\n                  {!value ? 'Select...' : Array.isArray(value) ? value.map((v) => v.name).join(', ') : value?.name}\n                </span>\n                <ArrowsUpDownIcon className=\"h-5 w-5 text-gray-400\" />\n              </ListboxButton>\n            </span>\n\n            <Transition show={open} leave=\"transition ease-in duration-100\" leaveFrom=\"opacity-100\" leaveTo=\"opacity-0\">\n              <ListboxOptions\n                static\n                className={classNames(\n                  popupFullWidth ? 'w-full' : '',\n                  'mt-1 min-w-[120px] z-50 absolute rounded-md bg-white max-h-60 py-1 text-base leading-6 shadow-xs overflow-auto focus:outline-none sm:text-sm sm:leading-5',\n                )}\n              >\n                {options.map((item) => (\n                  <ListboxOption key={item.id + item.name} value={item} disabled={item.unavailable}>\n                    {({ focus }) => {\n                      const selected =\n                        (Array.isArray(value) && !!value.find((v) => v.id === item.id)) ||\n                        (!Array.isArray(value) && value?.id === item.id);\n                      return (\n                        <div\n                          className={classNames(\n                            focus\n                              ? 'text-white bg-blue-600'\n                              : item.unavailable\n                                ? 'bg-gray-300 text-gray-900'\n                                : 'text-gray-900',\n                            'cursor-default select-none relative py-2 pl-8 pr-4',\n                          )}\n                        >\n                          <span className={classNames(selected ? 'font-semibold' : 'font-normal', 'block truncate')}>\n                            {item.name}\n                          </span>\n                          {selected && (\n                            <span\n                              className={classNames(\n                                focus ? 'text-white' : 'text-blue-600',\n                                'absolute inset-y-0 left-0 flex items-center pl-1.5',\n                              )}\n                            >\n                              <CheckIcon className=\"h-5 w-5\" />\n                            </span>\n                          )}\n                        </div>\n                      );\n                    }}\n                  </ListboxOption>\n                ))}\n              </ListboxOptions>\n            </Transition>\n          </div>\n        </>\n      )}\n    </Listbox>\n  );\n}\n\nexport default Select;\n","import tag from 'graphql-tag';\nimport type { AdminSchemaModel } from '../types';\n\nconst getFields = (models: AdminSchemaModel[], modelName: string, update = false) => {\n  const model = models.find((item) => item.id === modelName);\n  if (!model) {\n    return 'id';\n  }\n  let fieldsString = `${model.idField} `;\n  model?.fields.forEach((field) => {\n    if ((field.read && field.name !== model.idField) || (update && field.update)) {\n      if (field.kind !== 'object') {\n        fieldsString += `${field.name} `;\n      } else if (!(field.list && !update)) {\n        const fieldModel = models.find((item) => item.id === field.type);\n        if (fieldModel) {\n          fieldsString += `${field.name} {`;\n          if (fieldModel.idField) {\n            fieldsString += `${fieldModel.idField} `;\n          } else {\n            fieldModel.fields\n              .filter((item) => item.kind === 'scalar')\n              .forEach((field) => {\n                fieldsString += `${field.name} `;\n              });\n          }\n          if (!field.list) {\n            fieldModel.displayFields.forEach((item) => {\n              const splitItems = item.split('.');\n              for (let i = 0; i < splitItems.length; i++) {\n                if (i + 1 < splitItems.length) {\n                  fieldsString += `${splitItems[i]} { `;\n                } else if (!(splitItems.length === 1 && splitItems[i] === fieldModel.idField)) {\n                  fieldsString += `${splitItems[i]} `;\n                }\n              }\n              for (let i = 1; i < splitItems.length; i++) {\n                fieldsString += `} `;\n              }\n            });\n          }\n          fieldsString += '} ';\n        }\n      }\n    }\n  });\n\n  return fieldsString;\n};\n\nconst allScalar = (model?: AdminSchemaModel) => {\n  return model?.fields\n    .filter((item) => item.kind === 'scalar')\n    .map((item) => item.name)\n    .join(' ');\n};\nexport const queryDocument = (models: AdminSchemaModel[], modelName: string, findUnique = false, update = false) => {\n  const fields = getFields(models, modelName, update);\n  if (findUnique) {\n    return tag`\nquery findUnique${modelName}($where: ${modelName}WhereUniqueInput!) {\n  findUnique${modelName}(where: $where) {\n    ${fields}\n  }\n}\n`;\n  } else {\n    return tag`\nquery findMany${modelName}(\n  $where: ${modelName}WhereInput\n  $orderBy: [${modelName}OrderByWithRelationInput!]\n  $cursor: ${modelName}WhereUniqueInput\n  $skip: Int\n  $take: Int\n) {\n  findMany${modelName}(where: $where, orderBy: $orderBy, cursor: $cursor, skip: $skip, take: $take) {\n    ${fields}\n  }\n  findCount${modelName}(where: $where)\n}\n`;\n  }\n};\n\nexport const mutationDocument = (\n  models: AdminSchemaModel[],\n  model: string,\n  mutation: 'create' | 'update' | 'delete',\n) => {\n  const fields = getFields(models, model, true);\n  const modelObject = models.find((item) => item.id === model);\n  switch (mutation) {\n    case 'create':\n      return tag`mutation createOne${model}($data: ${model}CreateInput!) {\n  createOne${model}(data: $data) {\n    ${modelObject?.idField || allScalar(modelObject)}\n  }\n}`;\n    case 'delete':\n      return tag`mutation deleteOne${model} ($where: ${model}WhereUniqueInput!) {\n  deleteOne${model} (where: $where) {\n    ${modelObject?.idField || allScalar(modelObject)}\n  }\n}`;\n    case 'update':\n      return tag`mutation updateOne${model} ($where: ${model}WhereUniqueInput!, $data: ${model}UpdateInput!) {\n  updateOne${model} (where: $where, data: $data) {\n    ${fields}\n  }\n}`;\n  }\n};\n","import type { AdminSchemaModel } from '../../types';\n\nexport const initPages = (pagesCount: number, page: number, showPagesCount = 4) => {\n  showPagesCount = pagesCount < showPagesCount ? pagesCount : showPagesCount;\n  const pages = [];\n\n  let middleOne = Math.ceil(showPagesCount / 2);\n  middleOne = page >= middleOne ? page : middleOne;\n\n  let lastOne = middleOne + Math.floor(showPagesCount / 2);\n  lastOne = lastOne >= pagesCount ? pagesCount : lastOne;\n\n  const firstOne = lastOne - showPagesCount + 1;\n\n  for (let i = firstOne; i <= lastOne; i++) {\n    pages.push(i);\n  }\n\n  return pages;\n};\n\nexport const getDisplayName = (value: any, model: AdminSchemaModel) => {\n  if (Object.keys(value).length > 0) {\n    const values: string[] = [];\n    model.displayFields.forEach((item) => {\n      const splitItem = item.split('.');\n      if (splitItem.length === 1) {\n        values.push(value[splitItem[0]]);\n      } else {\n        let nameValue: any = { ...value };\n        splitItem.forEach((field) => {\n          if (nameValue) {\n            nameValue = nameValue[field];\n          }\n        });\n        if (nameValue) {\n          values.push(nameValue);\n        }\n      }\n    });\n    return values.join(' ');\n  }\n  return '';\n};\n\nexport function randString(length: number) {\n  const result = [];\n  const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n  const charactersLength = characters.length;\n  for (let i = 0; i < length; i++) {\n    result.push(characters.charAt(Math.floor(Math.random() * charactersLength)));\n  }\n  return result.join('');\n}\n","import { useContext } from 'react';\nimport { TableContext } from './Context';\n\nexport const useModel = (name: string) => {\n  const {\n    schema: { models },\n  } = useContext(TableContext);\n  return models.find((item) => item.id === name);\n};\n\nexport const useEnum = (name: string) => {\n  const {\n    schema: { enums },\n  } = useContext(TableContext);\n  return enums.find((item) => item.name === name);\n};\n","import { useQuery } from '@apollo/client/react';\nimport { MagnifyingGlassIcon, XCircleIcon } from '@heroicons/react/24/outline';\nimport { useContext, useState } from 'react';\nimport { useController, useFormContext } from 'react-hook-form';\nimport Checkbox from '../../components/Checkbox';\nimport Modal from '../../components/Modal';\nimport Select from '../../components/Select';\nimport { buttonClasses, classNames, inputClasses } from '../../components/css';\nimport type { AdminSchemaField, FormInputs, ModelTableProps, PrismaRecord } from '../../types';\nimport { TableContext } from '../Context';\nimport { queryDocument } from '../QueryDocument';\nimport { getDisplayName } from '../Table/utils';\nimport DynamicTable from '../dynamicTable';\nimport { useEnum } from '../useSchema';\n\ninterface Option {\n  id: any;\n  name: any;\n}\n\nconst getFieldValidation = (field: AdminSchemaField, inputValidation: ModelTableProps['inputValidation']) => {\n  const modelName = field.id.split('.')[0];\n  return inputValidation ? (inputValidation[modelName] ? inputValidation[modelName][field.name] || {} : {}) : {};\n};\n\nconst defaultInputs: Omit<FormInputs, 'Upload' | 'Editor'> = {\n  Default({ field, disabled, value }) {\n    const { lang, inputValidation } = useContext(TableContext);\n    const options: any = {\n      disabled,\n      defaultValue: value\n        ? field.type === 'Json'\n          ? JSON.stringify(value)\n          : field.list && Array.isArray(value)\n            ? value.join(',')\n            : value\n        : value,\n    };\n    if (field.list) {\n      options.type = 'text';\n    } else {\n      switch (field.type) {\n        case 'Int':\n        case 'BigInt':\n          options.type = 'number';\n          break;\n        case 'Float':\n        case 'Decimal':\n          options.type = 'number';\n          options.step = 'any';\n          break;\n        case 'String':\n          options.type = 'text';\n          break;\n      }\n    }\n    const { register, getFieldState } = useFormContext();\n    const { error } = getFieldState(field.name);\n    return (\n      <div className=\"flex flex-wrap w-full sm:w-1/2 pr-2 pt-2\">\n        <div className=\"w-full text-gray-600\">\n          {field.title}\n          {error && (\n            <span className=\"text-red-700 text-xs\">\n              {typeof error.message === 'string' ? error.message : lang.isRequired}\n            </span>\n          )}\n        </div>\n        <input\n          className={classNames('w-full', inputClasses, error ? 'border-red-400' : '')}\n          defaultValue={value}\n          {...register(field.name, { required: field.required, ...getFieldValidation(field, inputValidation) })}\n          {...options}\n        />\n      </div>\n    );\n  },\n  Enum({ field, value, disabled }) {\n    const [state, setState] = useState(value);\n    const enumType = useEnum(field.type);\n    const { lang, dir, inputValidation } = useContext(TableContext);\n    const { control } = useFormContext();\n    const {\n      field: inputField,\n      fieldState: { error },\n    } = useController({\n      name: field.name,\n      control,\n      defaultValue: value,\n      rules: { required: field.required, ...getFieldValidation(field, inputValidation) },\n    });\n\n    const options: Option[] = field.required ? [] : [{ id: null, name: lang.all }];\n    if (enumType) {\n      options.push(...enumType.fields.map((item) => ({ id: item, name: item })));\n    }\n    return (\n      <div className=\"flex flex-wrap w-full sm:w-1/2 pr-2 pt-2\">\n        <div className=\"w-full text-gray-600\">\n          {field.title}\n          {error && <span className=\"text-red-700 text-xs\">{error.message ? error.message : lang.isRequired}</span>}\n        </div>\n        <Select\n          dir={dir}\n          className=\"w-full\"\n          disabled={disabled}\n          value={options.find((option) => option.id === state)}\n          onChange={(option: Option) => {\n            setState(option.id);\n            inputField.onChange(option.id);\n          }}\n          options={options}\n        />\n      </div>\n    );\n  },\n\n  Object({ field, value, disabled }) {\n    const {\n      schema: { models },\n      lang,\n    } = useContext(TableContext);\n    const model = models.find((item) => item.id === field.type);\n    if (!model) {\n      throw new Error(`Model not found for field type: ${field.type}`);\n    }\n    const [modal, setModal] = useState(false);\n    const [state, setSate] = useState(value);\n\n    const { data } = useQuery(queryDocument(models, field.type, true), {\n      variables: {\n        where: {\n          [model.idField]:\n            state &&\n            typeof state === 'object' &&\n            !(state instanceof Date) &&\n            !Array.isArray(state) &&\n            model.idField in state\n              ? (state as PrismaRecord)[model.idField]\n              : undefined,\n        },\n      },\n      skip: !(state && typeof state === 'object' && Object.keys(state).length > 0),\n    });\n\n    const result = data ? (data as any)[`findUnique${field.type}`] : {};\n\n    const { control } = useFormContext();\n    const {\n      field: inputField,\n      fieldState: { error },\n    } = useController({\n      name: field.name,\n      control,\n      defaultValue:\n        value &&\n        typeof value === 'object' &&\n        !(value instanceof Date) &&\n        !Array.isArray(value) &&\n        model.idField in value\n          ? (value as PrismaRecord)[model.idField]\n          : undefined,\n      rules: { required: field.required },\n    });\n\n    return (\n      <div className=\"flex flex-wrap w-full sm:w-1/2 pr-2 pt-2\">\n        <Modal on={modal} toggle={() => setModal(!modal)}>\n          <DynamicTable\n            model={model.id}\n            inEdit\n            connect={state && typeof state === 'object' && Object.keys(state).length > 0 ? result : {}}\n            onConnect={(_value) => {\n              setSate(_value);\n              inputField.onChange(_value[model.idField]);\n              setModal(!modal);\n            }}\n          />\n        </Modal>\n        <div className=\"w-full text-gray-600\">\n          {field.title}\n          <span className=\"text-red-700 text-xs\">{error ? lang.isRequired : ''}</span>\n        </div>\n        <div className=\"w-full flex items-center\">\n          <button\n            disabled={disabled}\n            type=\"button\"\n            className={classNames(\n              buttonClasses,\n              'rounded-md bg-transparent text-blue-600 hover:bg-blue-100 hover:bg-opacity-25',\n            )}\n            onClick={() => setModal(!modal)}\n          >\n            <MagnifyingGlassIcon className=\"h-5 w-5\" />\n          </button>\n          <input className={classNames(inputClasses, 'mx-2 flex-1')} value={getDisplayName(state, model)} disabled />\n          {!field.required && (\n            <button\n              disabled={disabled}\n              type=\"button\"\n              className={classNames(\n                buttonClasses,\n                'rounded-md bg-transparent text-red-600 hover:bg-red-100 hover:bg-opacity-25',\n              )}\n              onClick={() => {\n                setSate({});\n                inputField.onChange(null);\n              }}\n            >\n              <XCircleIcon className=\"h-5 w-5\" />\n            </button>\n          )}\n        </div>\n      </div>\n    );\n  },\n  Date({ field, value, disabled }) {\n    const { lang, inputValidation } = useContext(TableContext);\n    const { register, getFieldState } = useFormContext();\n    const { error } = getFieldState(field.name);\n    return (\n      <div className=\"flex w-full flex-wrap pr-2 pt-2 sm:w-1/2\">\n        <div className=\"w-full text-gray-600\">\n          {field.title}\n          {error && (\n            <span className=\"text-xs text-red-700\">\n              {typeof error.message === 'string' ? error.message : lang.isRequired}\n            </span>\n          )}\n        </div>\n        <input\n          className={classNames('w-full', inputClasses, error ? 'border-red-400' : '')}\n          type=\"datetime-local\"\n          disabled={disabled}\n          defaultValue={\n            value && (typeof value === 'string' || typeof value === 'number' || value instanceof Date)\n              ? new Date(value).toISOString().slice(0, 16)\n              : ''\n          }\n          {...register(field.name, {\n            required: field.required,\n            valueAsDate: true,\n            ...(getFieldValidation(field, inputValidation) as any),\n          })}\n        />\n      </div>\n    );\n  },\n  Boolean({ field, value, disabled }) {\n    const [state, setState] = useState(value);\n\n    const { control } = useFormContext();\n    const { field: inputField } = useController({\n      name: field.name,\n      control,\n      defaultValue: value,\n    });\n\n    const onChangeHandler = (value: boolean) => {\n      inputField.onChange(value);\n      setState(value);\n    };\n\n    return (\n      <div className=\"flex flex-wrap w-full sm:w-1/2 pr-2 pt-2\">\n        <Checkbox\n          label={field.title}\n          id={field.id}\n          disabled={disabled}\n          onChange={(e) => onChangeHandler(e.target.checked)}\n          checked={!!state}\n        />\n      </div>\n    );\n  },\n};\n\nexport const Inputs: FormInputs = {\n  ...defaultInputs,\n  Upload: defaultInputs.Default,\n  Editor: defaultInputs.Default,\n};\n","import { useMutation } from '@apollo/client/react';\nimport { useContext } from 'react';\nimport type { AdminSchemaField, AdminSchemaModel } from '../../types';\nimport { TableContext } from '../Context';\nimport { mutationDocument } from '../QueryDocument';\nimport type { FormProps } from './index';\n\ninterface GetValueOptions {\n  value: string;\n  field?: AdminSchemaField;\n  useSet?: boolean;\n  useEquals?: boolean;\n}\n\nexport const getValueByType = ({ value, field, useSet = true, useEquals }: GetValueOptions) => {\n  if (!field) {\n    return value;\n  }\n  if (field.type === 'Json') {\n    return value ? JSON.parse(value) : field.list ? [] : {};\n  }\n  if (field.list) {\n    if (!value) return [];\n    const result: any[] = value.split(',');\n    switch (field.type) {\n      case 'Int':\n        result.forEach((value1, index) => {\n          result[index] = Number.parseInt(value1, 10);\n        });\n        break;\n      case 'Float':\n        result.forEach((value1, index) => {\n          result[index] = Number.parseFloat(value1);\n        });\n        break;\n      case 'Boolean':\n        result.forEach((value1, index) => {\n          result[index] = value1 === 'true';\n        });\n        break;\n    }\n    return result;\n  } else {\n    const result = ['BigInt', 'Int'].includes(field.type)\n      ? Number.parseInt(value, 10)\n      : ['Float', 'Decimal'].includes(field.type)\n        ? Number.parseFloat(value)\n        : value;\n    return !useSet || useEquals ? (useEquals ? { equals: result } : result) : { set: result };\n  }\n};\n\nconst useActions = (model: AdminSchemaModel, data: any, action: FormProps['action'], onSave: () => void) => {\n  const {\n    schema: { models },\n    valueHandler,\n    useSet,\n  } = useContext(TableContext);\n  const [updateModel, { loading: updateLoading }] = useMutation(mutationDocument(models, model.id, 'update'));\n  const [createModel, { loading: createLoading }] = useMutation(mutationDocument(models, model.id, 'create'));\n  const getField = (name: string) => {\n    return model.fields.find((item) => item.name === name);\n  };\n\n  const onUpdateHandler = (newData: any) => {\n    const updateData: any = {};\n\n    Object.keys(newData).forEach((key) => {\n      const field = getField(key);\n      if (field?.update) {\n        if (field.kind === 'object') {\n          const fieldModel = models.find((item) => item.id === field.type);\n          if (!fieldModel) {\n            return;\n          }\n          const editField = fieldModel.fields.find((item) => item.name === fieldModel.idField);\n          if (!editField) {\n            return;\n          }\n          if ((newData[key] && !data[key]) || (newData[key] && newData[key] !== data[key][fieldModel.idField])) {\n            updateData[key] = {\n              connect: {\n                [fieldModel.idField]: getValueByType({\n                  value: newData[key],\n                  field: editField,\n                  useSet: false,\n                }),\n              },\n            };\n          } else if (!newData[key] && data[key]) {\n            updateData[key] = {\n              disconnect: {\n                [fieldModel.idField]: getValueByType({\n                  value: data[key][fieldModel.idField],\n                  field: editField,\n                  useSet: false,\n                  useEquals: !field.required,\n                }),\n              },\n            };\n          }\n        } else if (newData[key] !== data[key]) {\n          updateData[key] = valueHandler\n            ? valueHandler(newData[key], field)\n            : getValueByType({ value: newData[key], field, useSet });\n        }\n      }\n    });\n    if (Object.keys(updateData).length > 0) {\n      updateModel({\n        variables: {\n          where: {\n            [model.idField]: data[model.idField],\n          },\n          data: updateData,\n        },\n      }).then(() => {\n        onSave();\n      });\n    }\n  };\n\n  const onCreateHandler = (newData: any) => {\n    const createData: any = {};\n    Object.keys(newData).forEach((key) => {\n      const field = getField(key);\n      if (field?.kind === 'object') {\n        const fieldModel = models.find((item) => item.id === field.type);\n        if (!fieldModel) {\n          return;\n        }\n        const editField = fieldModel.fields.find((item) => item.name === fieldModel.idField);\n        if (!editField) {\n          return;\n        }\n        if (newData[key] && typeof newData[key] !== 'object') {\n          createData[key] = {\n            connect: {\n              [fieldModel.idField]: getValueByType({\n                value: newData[key],\n                field: editField,\n                useSet: false,\n              }),\n            },\n          };\n        }\n      } else {\n        createData[key] = valueHandler\n          ? valueHandler(newData[key], field, true)\n          : getValueByType({\n              value: newData[key],\n              field,\n              useSet: false,\n            });\n      }\n    });\n    createModel({\n      variables: {\n        data: createData,\n      },\n    }).then(() => {\n      onSave();\n    });\n  };\n\n  const onSubmit = (newData: any) => {\n    void (action === 'create' ? onCreateHandler(newData) : onUpdateHandler(newData));\n  };\n\n  return {\n    onSubmit,\n    loading: updateLoading || createLoading,\n  };\n};\n\nexport default useActions;\n","import type React from 'react';\nimport { useContext } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport Spinner from '../../components/Spinner';\nimport { buttonClasses, classNames } from '../../components/css';\nimport type { AdminSchemaModel } from '../../types';\nimport { TableContext } from '../Context';\nimport { Inputs } from './Inputs';\nimport useActions from './useActions';\n\nexport interface FormProps {\n  action: 'update' | 'create' | 'view';\n  model: string;\n  data: any;\n  onCancel: () => void;\n  onSave: () => void;\n}\n\nconst getDefaultValues = (\n  action: FormProps['action'],\n  model: AdminSchemaModel,\n  data: any,\n  models: AdminSchemaModel[],\n) => {\n  const defaultValues: any = {};\n  model.fields\n    .filter(\n      (field) =>\n        (((field.update || field.read) && action !== 'create') || (action === 'create' && field.create)) &&\n        !(field.list && field.kind === 'object') &&\n        !field.relationField,\n    )\n    .slice()\n    .sort((a, b) => a.order - b.order)\n    .forEach((field) => {\n      if (!data[field.name]) {\n        defaultValues[field.name] = data[field.name];\n      } else {\n        const valueHandler = () => {\n          if (field.type === 'DateTime') {\n            return new Date(data[field.name]).toISOString().slice(0, 16);\n          } else if (field.type === 'Json') {\n            return JSON.stringify(data[field.name]);\n          } else if (field.list) {\n            return data[field.name].join(',');\n          } else if (field.kind === 'object') {\n            const fieldModel = models.find((item) => item.id === field.type);\n            if (!fieldModel) {\n              return data[field.name];\n            }\n            return data[field.name][fieldModel?.idField];\n          } else {\n            return data[field.name];\n          }\n        };\n\n        defaultValues[field.name] = valueHandler();\n      }\n    });\n  return defaultValues;\n};\n\nconst Form: React.FC<FormProps> = ({ action, model: modelName, data, onCancel, onSave }) => {\n  const {\n    schema: { models },\n    formInputs,\n    lang,\n  } = useContext(TableContext);\n  const model = models.find((item) => item.id === modelName)!;\n  const { onSubmit, loading } = useActions(model, data, action, onSave);\n\n  const formMethods = useForm({\n    defaultValues: getDefaultValues(action, model, data, models),\n  });\n\n  const { errors, isDirty } = formMethods.formState;\n\n  const InputComponents = formInputs\n    ? {\n        ...Inputs,\n        ...formInputs,\n      }\n    : Inputs;\n\n  return (\n    <div\n      className=\"flex flex-col bg-white rounded shadow-lg text-gray-800 text-base mb-5 mx-auto\"\n      style={action === 'create' ? { maxWidth: '1000px', maxHeight: '100vh' } : {}}\n    >\n      <header className=\"py-4 px-5 rounded-t border-b border-gray-100 font-bold text-2xl\">\n        {`${lang[action]} ${model.name}`}\n      </header>\n      <FormProvider {...formMethods}>\n        <form onSubmit={formMethods.handleSubmit(onSubmit)} style={{ overflow: 'auto' }}>\n          <div className=\"relative py-4 px-5 flex-auto overflow-auto\" style={{ overflow: 'visible' }}>\n            {loading && <Spinner />}\n            <div className=\"flex flex-wrap w-full\">\n              {model.fields\n                .filter(\n                  (field) =>\n                    ((action !== 'view' && field[action]) ||\n                      (['update', 'view'].includes(action) && (field.read || field.update))) &&\n                    !(field.list && field.kind === 'object') &&\n                    !field.relationField,\n                )\n                .slice()\n                .sort((a, b) => a.order - b.order)\n                .map((field) => {\n                  const options = {\n                    data,\n                    field: field,\n                    value: data[field.name],\n                    disabled: (action === 'update' && !field.update) || action === 'view',\n                  };\n                  if (field.list) {\n                    return <InputComponents.Default key={field.id} {...options} />;\n                  }\n                  if (field.kind === 'enum') return <InputComponents.Enum key={field.id} {...options} />;\n                  if (field.kind === 'object')\n                    return (\n                      <InputComponents.Object\n                        key={field.id}\n                        {...options}\n                        value={data[field.name] ? data[field.name] : {}}\n                      />\n                    );\n                  if (field.editor) return <InputComponents.Editor key={field.id} {...options} />;\n                  if (field.upload) return <InputComponents.Upload key={field.id} {...options} />;\n                  switch (field.type) {\n                    case 'Boolean':\n                      return <InputComponents.Boolean key={field.id} {...options} />;\n                    case 'DateTime':\n                      return <InputComponents.Date key={field.id} {...options} />;\n                    default:\n                      return <InputComponents.Default key={field.id} {...options} />;\n                  }\n                })}\n            </div>\n          </div>\n          <div className=\"flex justify-end py-4 px-5 rounded-b border-t border-gray-100\">\n            <button\n              className={classNames(\n                buttonClasses,\n                'rounded-md py-2 px-4 bg-transparent text-red-600 hover:bg-red-100 hover:bg-opacity-25',\n              )}\n              type=\"button\"\n              onClick={onCancel}\n            >\n              {action !== 'view' ? lang.cancel : lang.close}\n            </button>\n            {action !== 'view' && (\n              <button\n                className={classNames(\n                  buttonClasses,\n                  'rounded-md py-2 px-4 bg-green-500 text-white active:bg-green-600 shadow hover:bg-green-800',\n                )}\n                type=\"submit\"\n                disabled={Object.keys(errors).length !== 0 || !isDirty}\n              >\n                {lang.save}\n              </button>\n            )}\n          </div>\n        </form>\n      </FormProvider>\n    </div>\n  );\n};\nexport default Form;\n","import { useLazyQuery } from '@apollo/client/react';\nimport type React from 'react';\nimport { useEffect, useMemo, useState } from 'react';\nimport type { Option } from '../components/Select';\nimport Spinner from '../components/Spinner';\nimport { classNames } from '../components/css';\nimport { useTableContext } from './Context';\nimport Form from './Form';\nimport { queryDocument } from './QueryDocument';\nimport DynamicTable from './dynamicTable';\n\ninterface EditRecordProps {\n  model: string;\n  update: any;\n  view?: any;\n  onSave: () => void;\n}\n\nconst EditRecord: React.FC<EditRecordProps> = ({ model, update, onSave, view }) => {\n  const {\n    schema: { models },\n    push,\n    pagesPath,\n    onCancelUpdate,\n    actions,\n  } = useTableContext();\n  const modelObject = models.find((item) => item.id === model);\n  const isField = modelObject?.fields.find((field) => field.name === modelObject?.idField);\n  const queryVars = useMemo(\n    () =>\n      modelObject\n        ? {\n            where: {\n              [modelObject.idField]: isField?.type === 'String' ? update || view : Number.parseInt(update || view, 10),\n            },\n          }\n        : undefined,\n    [modelObject, isField, update, view],\n  );\n  const [execGetRecord, { data, loading, error, refetch }] = useLazyQuery(queryDocument(models, model, true, true), {\n    fetchPolicy: 'network-only',\n  });\n\n  const tabs = modelObject?.fields.filter((field) => field.kind === 'object' && field.list && field.read);\n  const options: Option[] = tabs?.map((t) => ({ id: t.id, name: t.title })) || [];\n  const [option, setOption] = useState(options[0]);\n  const relationField = tabs?.find((t) => t.id === option.id);\n\n  useEffect(() => {\n    if (modelObject && !data && !loading && !error) {\n      execGetRecord({ variables: queryVars });\n    }\n  }, [modelObject, data, loading, error, execGetRecord, queryVars]);\n\n  const record = data ? data[`findUnique${model}`] : {};\n\n  if (\n    (!loading && data && !data[`findUnique${model}`] && modelObject) ||\n    (modelObject && !modelObject.update && !actions && !view) ||\n    (actions && !actions.includes('update') && !view)\n  )\n    push(pagesPath + model);\n\n  const onUpdateCancel =\n    onCancelUpdate ||\n    (({ model }: { model: string }) => {\n      push(pagesPath + model);\n    });\n\n  return loading || !modelObject || !data ? (\n    <Spinner />\n  ) : (\n    <div className=\"flex flex-wrap w-full\">\n      <div className=\"w-full\">\n        <Form\n          model={model}\n          action={view ? 'view' : 'update'}\n          data={record}\n          onCancel={() => onUpdateCancel({ model })}\n          onSave={onSave}\n        />\n      </div>\n      {!!tabs?.length && !!Object.keys(record).length && (\n        <div className=\"w-full\">\n          {relationField && (\n            <DynamicTable\n              headerActions={\n                <div className=\"border-b border-gray-200\">\n                  <nav className=\"-mb-px flex overflow-auto\" aria-label=\"Tabs\">\n                    {options.map((item) => (\n                      <a\n                        key={item.id}\n                        onClick={() => setOption(item)}\n                        className={classNames(\n                          item.id === option.id\n                            ? 'border-indigo-500 text-indigo-600'\n                            : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300',\n                          'whitespace-nowrap p-4 border-b-2 font-medium text-sm cursor-pointer',\n                        )}\n                        aria-current={item.id === option.id ? 'page' : undefined}\n                      >\n                        {item.name}\n                      </a>\n                    ))}\n                  </nav>\n                </div>\n              }\n              key={relationField.type}\n              model={relationField.type}\n              inEdit\n              filter={{ [model]: record[modelObject.idField] }}\n              parent={{\n                name: model,\n                value: record,\n                field: relationField.name,\n                updateRecord: async () => {\n                  await refetch();\n                },\n              }}\n            />\n          )}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default EditRecord;\n","import type { CellContext, ColumnDef } from '@tanstack/react-table';\nimport { buttonClasses, classNames } from '../../components/css';\nimport type { AdminSchemaField, AdminSchemaModel, Columns, GetColumnsPartial, PrismaRecord } from '../../types';\nimport { getDisplayName } from './utils';\n\nexport interface ContextValues {\n  lang: any;\n  schema: { models: AdminSchemaModel[] };\n  push: (path: string) => void;\n  pagesPath: string;\n}\n\nconst columnsObject = (\n  field: AdminSchemaField,\n  model: AdminSchemaModel | undefined,\n  context: ContextValues,\n): Columns => ({\n  boolean: {\n    header: field.title,\n    accessorKey: field.name,\n    enableColumnFilter: field.filter && !field.list,\n    enableSorting: field.sort,\n    cell: ({ getValue }: CellContext<PrismaRecord, unknown>) => {\n      const value = getValue() as boolean | boolean[];\n      return field.list ? (value as boolean[]).join(',') : value ? context.lang.yes : context.lang.no;\n    },\n  },\n  number: {\n    header: field.title,\n    accessorKey: field.name,\n    enableColumnFilter: field.filter && !field.list,\n    enableSorting: field.sort,\n    cell: ({ getValue }: CellContext<PrismaRecord, unknown>) => {\n      const value = getValue() as number | number[];\n      return field.list ? (value as number[]).join(',') : value;\n    },\n  },\n  enum: {\n    header: field.title,\n    accessorKey: field.name,\n    enableColumnFilter: field.filter && !field.list,\n    enableSorting: field.sort,\n    cell: ({ getValue }: CellContext<PrismaRecord, unknown>) => {\n      const value = getValue() as string | string[];\n      return field.list ? (value as string[]).join(',') : value;\n    },\n  },\n  DateTime: {\n    header: field.title,\n    accessorKey: field.name,\n    minSize: 200,\n    enableColumnFilter: false,\n    enableSorting: field.sort,\n    cell: ({ getValue }: CellContext<PrismaRecord, unknown>) => {\n      const value = getValue() as string;\n      return value ? new Date(value).toLocaleString() : '';\n    },\n  },\n  object: {\n    header: field.title,\n    accessorKey: field.name,\n    enableColumnFilter: false,\n    enableSorting: false,\n    cell: ({ getValue }: CellContext<PrismaRecord, unknown>) => {\n      const value = getValue() as Record<string, any>;\n      const objectModel = context.schema.models.find((item) => item.id === field.type);\n      if (!objectModel || !value) return <></>;\n      return (\n        <button\n          onClick={() =>\n            context.push(`${context.pagesPath}${field.type}?${objectModel.idField}=${value[objectModel.idField]}`)\n          }\n          style={{\n            textOverflow: 'ellipsis',\n            overflow: 'hidden',\n            whiteSpace: 'nowrap',\n            padding: 0,\n            textTransform: 'none',\n          }}\n          className={classNames(\n            buttonClasses,\n            'rounded-md py-2 px-4 bg-transparent text-blue-600 hover:bg-blue-100 hover:bg-opacity-25',\n          )}\n        >\n          {getDisplayName(value, objectModel)}\n        </button>\n      );\n    },\n  },\n  string: {\n    header: field.title,\n    accessorKey: field.name,\n    enableColumnFilter: field.filter && !field.list,\n    enableSorting: field.sort,\n    cell: ({ getValue }: CellContext<PrismaRecord, unknown>) => {\n      const value = getValue() as string | string[];\n      return field.list ? (value as string[]).join(',') : value;\n    },\n  },\n  json: {\n    header: field.title,\n    accessorKey: field.name,\n    enableColumnFilter: false,\n    enableSorting: false,\n    cell: ({ getValue }: CellContext<PrismaRecord, unknown>) => {\n      const value = getValue();\n      return value ? JSON.stringify(value) : value;\n    },\n  },\n  list: {\n    header: field.title,\n    accessorKey: field.name,\n    enableColumnFilter: false,\n    enableSorting: false,\n    cell: ({ row }: CellContext<PrismaRecord, unknown>) => {\n      if (!model) return <></>;\n      const id = row.original[model.idField];\n      return (\n        <button\n          className={classNames(\n            buttonClasses,\n            'rounded-md py-2 px-4 bg-transparent text-blue-600 hover:bg-blue-100 hover:bg-opacity-25',\n          )}\n          onClick={() => context.push(`${context.pagesPath}${field.type}?${model.id}=${id}`)}\n        >\n          {context.lang.show}\n        </button>\n      );\n    },\n  },\n});\n\nexport const columns = (\n  model?: AdminSchemaModel,\n  customColumns?: GetColumnsPartial,\n  context?: ContextValues,\n): ColumnDef<PrismaRecord>[] => {\n  if (!context) {\n    throw new Error('Context is required for columns function');\n  }\n\n  const getColumn = (field: AdminSchemaField) => {\n    const baseColumns = columnsObject(field, model, context);\n    return typeof customColumns !== 'undefined'\n      ? {\n          ...baseColumns,\n          ...customColumns(field, model),\n        }\n      : baseColumns;\n  };\n\n  return model\n    ? model.fields\n        .slice()\n        .sort((a, b) => a.order - b.order)\n        .filter((field) => field.read)\n        .map((field) => {\n          const column = getColumn(field);\n          if (field.list && field.kind === 'object') {\n            return column.list;\n          }\n          if (field.kind !== 'scalar') {\n            return column[field.kind] || column.string;\n          }\n          switch (field.type) {\n            case 'Int':\n            case 'Float':\n              return column.number || column.string;\n            case 'Boolean':\n              return column.boolean || column.string;\n            case 'DateTime':\n              return column.DateTime || column.string;\n            case 'String':\n              return column.string;\n            case 'Json':\n              return column.json || column.string;\n            default:\n              return column.string;\n          }\n        })\n    : [];\n};\n","import { useEffect, useState } from 'react';\n\nexport const useFilter = (init: any, setFilter: (value: any) => void, number?: boolean) => {\n  const [state, setState] = useState<{\n    value: any;\n    typingTimeout?: NodeJS.Timeout;\n  }>({\n    value: init ?? {},\n  });\n\n  useEffect(() => {\n    setState({ value: init || {} });\n  }, [init]);\n\n  const onChangeHandler = (newValue: any) => {\n    let search: any = false;\n    Object.keys(newValue).forEach((key) => {\n      if (newValue[key] !== undefined) {\n        if (!search) {\n          search = {};\n        }\n        if (['in', 'notIn'].includes(key)) {\n          search[key] = (newValue[key] as string).split(',').map((item) => (number ? Number.parseFloat(item) : item));\n        } else {\n          search[key] = number ? Number.parseFloat(newValue[key]) : newValue[key];\n        }\n      }\n    });\n    setFilter(search ?? undefined);\n  };\n\n  const onChange: (options?: { name?: string; value?: any; wait?: boolean }) => void = (options) => {\n    if (!options) {\n      setState({ value: {} });\n      onChangeHandler({});\n    } else if (options.name) {\n      const { name, value, wait } = options;\n      const search: string = value;\n      if (state.typingTimeout) clearTimeout(state.typingTimeout);\n\n      const newValue = {\n        [name]: search || value === false ? search : undefined,\n      };\n      setState({\n        value: newValue,\n        typingTimeout: setTimeout(\n          () => {\n            onChangeHandler(newValue);\n          },\n          !wait ? 1 : 1000,\n        ),\n      });\n    }\n  };\n\n  return {\n    value: state.value,\n    onChange,\n  };\n};\n","import { MagnifyingGlassCircleIcon, TrashIcon } from '@heroicons/react/24/solid';\nimport type React from 'react';\nimport { useContext, useEffect, useState } from 'react';\nimport Select from '../../components/Select';\nimport { buttonClasses, classNames, inputClasses } from '../../components/css';\nimport type { AdminSchemaField, AdminSchemaModel } from '../../types';\nimport { TableContext } from '../Context';\nimport { useEnum, useModel } from '../useSchema';\nimport { useFilter } from './useFilter';\nimport { randString } from './utils';\n\ninterface Option {\n  id: any;\n  name: any;\n}\n\ninterface FilterComponentsProps {\n  filterValue: any;\n  setFilter: (value: any) => void;\n  field: AdminSchemaField;\n}\n\ninterface FilterProps {\n  model: AdminSchemaModel;\n  setAllFilters: (values: { id: string; value: any }[]) => void;\n  filters: { id: string; value: any }[];\n}\n\nconst removeByIndexWithSplice = (array: any[], index: number) => {\n  const newArr = array.slice(); // create a copy of the original array\n  newArr.splice(index, 1); // remove the item at the specified index\n  return newArr; // return the modified array\n};\n\nexport const Filter: React.FC<FilterProps> = ({ model, setAllFilters, filters }) => {\n  const [state, setState] = useState(filters.map(() => randString(10)));\n  const { lang } = useContext(TableContext);\n\n  const deleteFilter = (index: number) => {\n    setState(removeByIndexWithSplice(state, index));\n    setAllFilters(removeByIndexWithSplice(filters, index));\n  };\n\n  return (\n    <div className={`flex w-full flex-col bg-white rounded-lg shadow border border-gray-300`}>\n      {state.map((key, index) => (\n        <FilterRow\n          model={model}\n          key={key}\n          index={index}\n          deleteFilter={() => deleteFilter(index)}\n          filter={filters[index]}\n          setFilter={({ id, value }) => {\n            // Deep clone filters to break references\n            const newFilters = JSON.parse(JSON.stringify(filters));\n\n            if (!value) {\n              setAllFilters(removeByIndexWithSplice(newFilters, index));\n              return;\n            }\n\n            newFilters[index] = { id, value: { ...value } };\n\n            // Update the filters state\n            setAllFilters(newFilters);\n          }}\n        />\n      ))}\n      {state.length === 0 && <div className=\"p-2 text-gray-500\">{lang.nonFilterMsg}</div>}\n      <div className=\"w-full p-2\">\n        <button\n          type=\"button\"\n          className={classNames(\n            buttonClasses,\n            'rounded-md py-2 px-2 bg-blue-500 text-white active:bg-blue-600 shadow hover:bg-blue-800',\n          )}\n          onClick={() => setState((prev) => prev.concat([randString(10)]))}\n        >\n          {lang.addFilter}\n        </button>\n      </div>\n    </div>\n  );\n};\n\ninterface FilterRowProps {\n  index: number;\n  model: AdminSchemaModel;\n  filter?: { id: string; value: any };\n  setFilter: (option: { id: string; value: any }) => void;\n  deleteFilter: () => void;\n}\n\nconst FilterRow: React.FC<FilterRowProps> = ({ model, filter, setFilter, index, deleteFilter }) => {\n  const options: Option[] = model.fields\n    .filter((f) => f.filter)\n    .slice()\n    .sort((a, b) => a.order - b.order)\n    .map((f) => ({ id: f.name, name: f.title }));\n  const { dir } = useContext(TableContext);\n\n  const [option, setOption] = useState<Option>(\n    !filter ? options[0] : (options.find((item) => item.id === filter.id) ?? options[0]),\n  );\n\n  const getField = model.fields.find((f) => f.name === option.id);\n  if (!getField) {\n    throw new Error(`Field not found for name: ${option.id}`);\n  }\n  const props: FilterComponentsProps = {\n    field: getField,\n    filterValue: getField.name === filter?.id ? filter.value : undefined,\n    setFilter: (value) => setFilter({ id: option.id, value }),\n  };\n  let filterComponent: React.ReactNode;\n  if (getField.kind === 'enum') {\n    filterComponent = <EnumFilter key={getField.name + index} {...props} />;\n  } else if (getField.kind === 'object') {\n    filterComponent = <ObjectFilter key={getField.name + index} {...props} />;\n  } else {\n    switch (getField.type) {\n      case 'Int':\n      case 'BigInt':\n      case 'Decimal':\n      case 'Float':\n      case 'DateTime':\n      case 'String':\n        filterComponent = <DefaultFilter key={getField.name + index} {...props} />;\n        break;\n      case 'Boolean':\n        filterComponent = <BooleanFilter key={getField.name + index} {...props} />;\n        break;\n    }\n  }\n  return (\n    <div\n      className={classNames(\n        'flex flex-col space-y-2 items-center border-b border-gray-500 bg-gray-200 p-1 md:space-y-0 md:flex-row md:space-x-2',\n        dir === 'rtl' ? 'md:space-x-reverse' : '',\n        index === 0 ? 'rounded-t-lg' : '',\n      )}\n    >\n      <Select dir={dir} value={option} onChange={(option: Option) => setOption(option)} options={options} />\n      {filterComponent}\n      <button\n        type=\"button\"\n        className={classNames(\n          buttonClasses,\n          'bg-transparent text-red-600 hover:bg-red-100 hover:bg-opacity-75 p-2 rounded-full',\n        )}\n        onClick={deleteFilter}\n      >\n        <TrashIcon className=\"h-5 w-5\" />\n      </button>\n    </div>\n  );\n};\n\nconst DefaultFilter: React.FC<FilterComponentsProps> = ({ filterValue, setFilter, field }) => {\n  const { value, onChange } = useFilter(filterValue, setFilter, !['String', 'DateTime'].includes(field.type));\n  const { lang, dir } = useContext(TableContext);\n\n  const getName = (name: string): any => {\n    return (\n      <div className=\"flex items-center\">\n        <span>{name}</span> {filterValue?.[name] && <MagnifyingGlassCircleIcon className=\"h-5 w-5 text-green-500\" />}\n      </div>\n    );\n  };\n  const options: Option[] = ['equals', 'in', 'notIn', 'lt', 'lte', 'gt', 'gte', 'not'].map((item) => ({\n    id: item,\n    name: getName(lang[item as 'gt']),\n  }));\n  if (options.length === 8 && field.type === 'String') {\n    options.push(\n      ...['contains', 'startsWith', 'endsWith'].map((item) => ({\n        id: item,\n        name: getName(lang[item as 'gt']),\n      })),\n    );\n  }\n  const [option, setOption] = useState<Option>(\n    filterValue ? (options.find((item) => !!filterValue[item.id]) ?? options[0]) : options[0],\n  );\n\n  const inputProps =\n    field.type === 'DateTime'\n      ? {\n          type: 'datetime-local',\n          defaultValue: value[option.id] ? new Date(value[option.id]).toISOString().slice(0, 16) : undefined,\n        }\n      : { type: 'text', value: value[option.id] || '' };\n\n  return (\n    <>\n      <Select\n        key={field.id}\n        dir={dir}\n        value={option}\n        onChange={(option: Option) => setOption(option)}\n        options={options}\n      />\n      <input\n        style={{ maxWidth: '13rem', lineHeight: 'inherit' }}\n        className={inputClasses.replace('py-2 px-4', 'py-2 px-3 text-sm')}\n        placeholder={lang[option.id as 'gt']}\n        {...inputProps}\n        onChange={(event) =>\n          onChange({\n            name: option.id,\n            value: field.type === 'DateTime' ? new Date(event.target.value).toISOString() : event.target.value,\n            wait: true,\n          })\n        }\n      />\n    </>\n  );\n};\n\nexport const BooleanFilter: React.FC<FilterComponentsProps> = ({ filterValue, setFilter }) => {\n  const { lang, dir } = useContext(TableContext);\n  const { value, onChange } = useFilter(filterValue, setFilter);\n  const options: Option[] = [\n    { id: undefined, name: lang.all },\n    { id: true, name: lang.yes },\n    { id: false, name: lang.no },\n  ];\n  return (\n    <Select\n      dir={dir}\n      value={options.find((option) => option.id === value?.equals)}\n      onChange={(option: Option) => onChange({ value: option.id, name: 'equals' })}\n      options={options}\n    />\n  );\n};\n\nexport const EnumFilter: React.FC<FilterComponentsProps> = ({ field, filterValue, setFilter }) => {\n  const { lang, dir } = useContext(TableContext);\n  const enumType = useEnum(field.type);\n  const options: Option[] = [{ id: undefined, name: lang.all }];\n  if (enumType) {\n    options.push(...enumType.fields.map((item) => ({ id: item, name: item })));\n  }\n  const { value, onChange } = useFilter(filterValue, setFilter);\n  return (\n    <Select\n      dir={dir}\n      value={options.find((option) => option.id === value?.equals)}\n      onChange={(option: Option) => onChange({ value: option.id, name: 'equals' })}\n      options={options}\n    />\n  );\n};\n\nconst ObjectFilter: React.FC<FilterComponentsProps> = ({ field, filterValue, setFilter }) => {\n  const { dir } = useContext(TableContext);\n  const model = useModel(field.type);\n  if (!model) {\n    throw new Error(`Model not found for field type: ${field.type}`);\n  }\n  const filter = filterValue ? (field.list ? filterValue.some : filterValue.is) : {};\n  const options = model.fields\n    .filter((item) => item.filter && item.kind !== 'object' && !item.list && item.type !== 'Json')\n    .sort((a, b) => a.order - b.order)\n    .map((item) => ({\n      id: item.name,\n      name: (\n        <div className=\"flex items-center\">\n          <span className=\"truncate\">{item.title}</span>{' '}\n          {filter[item.name] && <MagnifyingGlassCircleIcon className=\"h-5 w-5 text-green-500\" />}\n        </div>\n      ),\n    }));\n\n  const [currentField, setCurrentField] = useState<Option>(\n    filterValue ? (options.find((item) => !!filter[item.id]) ?? options[0]) : options[0],\n  );\n\n  const getField = model.fields.find((item) => item.name === currentField.id);\n  if (!getField) {\n    throw new Error(`Field not found for name: ${currentField.id}`);\n  }\n\n  const props: FilterComponentsProps | null = getField\n    ? {\n        field: getField,\n        filterValue: filter[getField.name],\n        setFilter: (value: any) => {\n          const newValue = { ...filter };\n          if (value) {\n            newValue[getField.name] = value;\n          } else {\n            // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n            delete newValue[getField.name];\n          }\n          setFilter(\n            Object.keys(newValue).length > 0 ? (field.list ? { some: newValue } : { is: newValue }) : undefined,\n          );\n        },\n      }\n    : null;\n\n  useEffect(() => {\n    setCurrentField(filterValue ? (options.find((item) => !!filter[item.id]) ?? options[0]) : options[0]);\n  }, [filterValue, filter, options]);\n\n  if (!props) {\n    return null;\n  }\n\n  let filterComponent: React.ReactNode;\n  if (getField.kind === 'enum') {\n    filterComponent = <EnumFilter {...props} />;\n  } else {\n    switch (getField.type) {\n      case 'Int':\n      case 'BigInt':\n      case 'Decimal':\n      case 'Float':\n      case 'DateTime':\n      case 'String':\n        filterComponent = <DefaultFilter {...props} />;\n        break;\n      case 'Boolean':\n        filterComponent = <BooleanFilter {...props} />;\n        break;\n    }\n  }\n  return (\n    <>\n      <Select\n        dir={dir}\n        value={currentField}\n        onChange={(option: Option) => {\n          if (option) {\n            setCurrentField(option);\n          }\n        }}\n        options={options as any}\n      />\n      {filterComponent}\n    </>\n  );\n};\n","import { useMutation } from '@apollo/client/react';\nimport { useContext } from 'react';\n\nimport type { AdminSchemaModel, TableParentRecord } from '../types';\nimport { TableContext } from './Context';\nimport { mutationDocument } from './QueryDocument';\n\nexport const useListConnectToOne = (parent: TableParentRecord) => {\n  const {\n    schema: { models },\n  } = useContext(TableContext);\n  const [updateModel, { loading: updateLoading }] = useMutation(mutationDocument(models, parent.name, 'update'));\n\n  const modelObject = models.find((m) => m.id === parent.name);\n\n  const listConnectToOne = (fieldModel: AdminSchemaModel, fieldId: any, connect = true, getData: () => void) => {\n    if (modelObject) {\n      updateModel({\n        variables: {\n          where: {\n            [modelObject.idField]: parent.value[modelObject.idField],\n          },\n          data: {\n            [parent.field]: {\n              [connect ? 'connect' : 'disconnect']: {\n                [fieldModel.idField]: fieldId,\n              },\n            },\n          },\n        },\n      }).then(() => {\n        void parent.updateRecord?.();\n        getData();\n      });\n    }\n  };\n\n  return {\n    listConnectToOne,\n    updateLoading,\n    modelObject,\n  };\n};\n","import type React from 'react';\nimport { useContext } from 'react';\nimport Spinner from '../../components/Spinner';\nimport { buttonClasses, classNames } from '../../components/css';\nimport type { AdminSchemaModel, TableParentRecord } from '../../types';\nimport { TableContext } from '../Context';\nimport { useListConnectToOne } from '../useListConnectToOne';\n\ninterface ListConnectProps {\n  parent: TableParentRecord;\n  row: any;\n  model: AdminSchemaModel;\n  getData: () => void;\n}\nexport const ListConnect: React.FC<ListConnectProps> = ({ parent, row, model, getData }) => {\n  const { listConnectToOne, updateLoading } = useListConnectToOne(parent);\n  const { lang } = useContext(TableContext);\n  const rowId = row.original[model.idField];\n\n  const fieldValue = parent.value[parent.field];\n  const isConnected = Array.isArray(fieldValue)\n    ? !!fieldValue.find((r: any) => r && typeof r === 'object' && r[model.idField] === rowId)\n    : false;\n\n  return (\n    <td className=\"px-4 py-2 text-center whitespace-nowrap\">\n      <button\n        className={classNames(\n          buttonClasses,\n          'rounded-md py-2 px-4 bg-transparent hover:bg-opacity-25',\n          isConnected ? 'text-red-600 hover:bg-red-100' : 'text-green-600 hover:bg-green-100',\n        )}\n        onClick={() => listConnectToOne(model, rowId, !isConnected, getData)}\n      >\n        {isConnected ? lang.disConnect : lang.connect}\n        {updateLoading && <Spinner h=\"h-5\" w=\"w-5\" />}\n      </button>\n    </td>\n  );\n};\n","import { Popover, PopoverButton, PopoverPanel } from '@headlessui/react';\nimport { EyeIcon, PencilSquareIcon, PlusIcon, TrashIcon } from '@heroicons/react/24/outline';\nimport {\n  ArrowDownIcon,\n  ArrowUpIcon,\n  ChevronDoubleLeftIcon,\n  ChevronDoubleRightIcon,\n  ChevronLeftIcon,\n  ChevronRightIcon,\n  MagnifyingGlassCircleIcon,\n} from '@heroicons/react/24/solid';\nimport {\n  type ColumnFiltersState,\n  type PaginationState,\n  type SortingState,\n  flexRender,\n  getCoreRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n} from '@tanstack/react-table';\nimport React, { useContext, useMemo, useState } from 'react';\nimport Checkbox from '../../components/Checkbox';\nimport Spinner from '../../components/Spinner';\nimport { buttonClasses, classNames } from '../../components/css';\nimport type { TableParentRecord } from '../../types';\nimport { TableContext } from '../Context';\nimport { type ContextValues, columns } from './Columns';\nimport { Filter } from './Filters';\nimport { ListConnect } from './ListConnect';\nimport { initPages } from './utils';\n\ninterface TableProps {\n  getData: () => void;\n  inEdit?: boolean;\n  model: string;\n  data: any[];\n  fetchMore: (pageSize: number, pageIndex: number) => void;\n  loading: boolean;\n  pageCount: number;\n  headerActions?: any;\n  initialFilter: { id: string; value: any }[];\n  sortByHandler: (sortBy: { id: string; desc: boolean }[]) => void;\n  filterHandler: (filters: { id: string; value: any }[]) => void;\n  onAction: (action: 'create' | 'delete' | 'connect', value?: unknown) => void;\n  connect?: any;\n  parent?: TableParentRecord;\n}\n\nexport const Table: React.FC<TableProps> = ({\n  initialFilter,\n  model: modelName,\n  data,\n  fetchMore,\n  loading,\n  pageCount: controlledPageCount,\n  sortByHandler,\n  filterHandler,\n  onAction,\n  inEdit,\n  connect,\n  parent,\n  getData,\n  headerActions,\n}) => {\n  const {\n    schema: { models },\n    push,\n    pagesPath,\n    pageSize: defaultPageSize,\n    pageSizeOptions,\n    paginationOptions,\n    tableColumns,\n    onSelect,\n    actions: userActions,\n    actionButtons,\n    lang,\n    dir,\n  } = useContext(TableContext);\n  const model = models.find((item) => item.id === modelName);\n\n  const contextValues: ContextValues = useMemo(\n    () => ({\n      lang,\n      schema: { models },\n      push,\n      pagesPath,\n    }),\n    [lang, models, push, pagesPath],\n  );\n\n  const columnList = useMemo(() => columns(model, tableColumns, contextValues), [model, tableColumns, contextValues]);\n\n  // State for pagination\n  const [pagination, setPagination] = useState<PaginationState>({\n    pageIndex: 0,\n    pageSize: defaultPageSize,\n  });\n\n  // State for sorting\n  const [sorting, setSorting] = useState<SortingState>([]);\n\n  // State for filtering (not used directly by the table, but managed externally)\n  const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>(\n    initialFilter.map((f) => ({ id: f.id, value: f.value })),\n  );\n\n  const tableInstance = useReactTable({\n    data,\n    columns: columnList,\n    state: {\n      pagination,\n      sorting,\n      columnFilters,\n    },\n    onPaginationChange: setPagination,\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    getCoreRowModel: getCoreRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    manualPagination: true,\n    manualSorting: true,\n    manualFiltering: true,\n    pageCount: controlledPageCount,\n  });\n\n  const [selected, setSelected] = useState<any[]>([]);\n  const [filters, setFilters] = useState(initialFilter);\n  // Listen for changes in pagination and use the state to fetch our new data\n\n  const onSelectHandler = (state: boolean, id?: any) => {\n    let newValues: any[];\n    if (!state && !id) {\n      newValues = [];\n      setSelected(newValues);\n    } else if (state && !id && model) {\n      newValues = data.map((row) => row[model.idField]);\n      setSelected(newValues);\n    } else if (!state && id) {\n      newValues = selected.filter((value) => value !== id);\n      setSelected(newValues);\n    } else {\n      newValues = [...selected, id];\n      setSelected(newValues);\n    }\n    void onSelect?.(newValues);\n  };\n\n  React.useEffect(() => {\n    fetchMore(pagination.pageSize, pagination.pageIndex);\n  }, [fetchMore, pagination.pageIndex, pagination.pageSize]);\n\n  React.useEffect(() => {\n    sortByHandler(sorting.map((s) => ({ id: s.id, desc: s.desc })));\n  }, [sorting, sortByHandler]);\n\n  const setAllFilters = (filters: { id: string; value: any }[]) => {\n    filterHandler(filters);\n    setFilters(filters);\n  };\n\n  const actions = userActions\n    ? {\n        create: userActions.includes('create'),\n        update: userActions.includes('update'),\n        delete: userActions.includes('delete'),\n      }\n    : {\n        create: model?.create,\n        update: model?.update,\n        delete: model?.delete,\n      };\n\n  const ActionButtons = {\n    Add: () => (\n      <button\n        type=\"button\"\n        className={classNames(\n          buttonClasses,\n          ' h-full rounded-md py-2 px-2 bg-blue-500 text-white active:bg-blue-600 shadow hover:bg-blue-800',\n        )}\n        onClick={() => onAction('create')}\n      >\n        <PlusIcon className=\"h-5 w-5\" />\n      </button>\n    ),\n    Update: ({ id }: { id: any }) => (\n      <button\n        type=\"button\"\n        className={classNames(buttonClasses, 'bg-transparent text-blue-600 hover:bg-blue-100 hover:bg-opacity-25')}\n        onClick={() => model && push(`${pagesPath}${modelName}?${actions.update ? 'update' : 'view'}=${id}`)}\n      >\n        {actions.update ? <PencilSquareIcon className=\"h-5 w-5\" /> : <EyeIcon className=\"h-5 w-5\" />}\n      </button>\n    ),\n    Delete: ({ id }: { id: any }) => (\n      <button\n        type=\"button\"\n        className={classNames(buttonClasses, 'bg-transparent text-red-600 hover:bg-red-100 hover:bg-opacity-25')}\n        onClick={() => {\n          const confirm = window.confirm(lang.deleteConfirm);\n          if (confirm && model) onAction('delete', id);\n        }}\n      >\n        <TrashIcon className=\"h-5 w-5\" />\n      </button>\n    ),\n    ...actionButtons,\n  };\n\n  const isSelect = onSelect && !inEdit;\n\n  const hasFilters = filters.length > 0;\n\n  const parentModel = models.find((item) => item.id === parent?.name);\n  const fieldUpdate = parentModel?.fields.find((f) => f.name === parent?.field)?.update;\n  // Render the UI for your table\n\n  const thClasses =\n    'px-4 py-2 text-center text-sm font-medium text-gray-500 whitespace-nowrap tracking-wider overflow-hidden overflow-ellipsis';\n  const tdClasses = 'px-4 py-2 text-center whitespace-nowrap overflow-hidden overflow-ellipsis text-gray-500';\n  return (\n    <>\n      <div className=\"flex flex-col rounded-lg shadow bg-white\">\n        {headerActions}\n        <div className=\"w-full inline-flex space-x-4 my-4 rtl:pr-4 rtl:space-x-reverse ltr:pl-4\">\n          {actions.create && !connect && (\n            <div>\n              <ActionButtons.Add />\n            </div>\n          )}\n          <Popover className=\"relative w-full\">\n            <PopoverButton\n              className={classNames(\n                buttonClasses,\n                'flex items-center rounded-md py-2 px-2 bg-blue-500 text-white active:bg-blue-600 shadow hover:bg-blue-800',\n              )}\n            >\n              {lang.filter}\n              {!!filters.length && (\n                <span className=\"rounded-full bg-yellow-400 px-2 rtl:mr-2 ltr:ml-2\">{filters.length}</span>\n              )}\n            </PopoverButton>\n            <PopoverPanel\n              transition\n              className=\"absolute z-10 mt-1 transition duration-200 ease-out data-[closed]:translate-y-1 data-[closed]:opacity-0\"\n            >\n              {model && <Filter filters={filters} setAllFilters={setAllFilters} model={model} />}\n            </PopoverPanel>\n          </Popover>\n        </div>\n        <div className=\"overflow-x-auto\">\n          <div className=\"relative\">\n            {loading && <Spinner />}\n            <table className=\"min-w-full divide-y divide-gray-200 border-b border-t border-gray-200\">\n              <thead className=\"bg-gray-100\">\n                {tableInstance.getHeaderGroups().map((headerGroup) => (\n                  <React.Fragment key={headerGroup.id}>\n                    <tr>\n                      {isSelect && (\n                        <th scope=\"col\" className={thClasses}>\n                          <Checkbox\n                            onChange={(e) => onSelectHandler(e.target.checked)}\n                            checked={data.length > 0 && selected.length === data.length}\n                            indeterminate={selected.length > 0 && selected.length !== data.length}\n                          />\n                        </th>\n                      )}\n                      <th scope=\"col\" className={thClasses} colSpan={2}>\n                        {lang.actions}\n                      </th>\n                      {fieldUpdate && parent && (\n                        <th scope=\"col\" className={thClasses}>\n                          <button\n                            className={classNames(\n                              buttonClasses,\n                              'bg-transparent text-blue-600 hover:bg-blue-100 hover:bg-opacity-25',\n                            )}\n                            onClick={() => {\n                              if (hasFilters) {\n                                setAllFilters([]);\n                              } else {\n                                setAllFilters(initialFilter);\n                              }\n                            }}\n                          >\n                            {hasFilters ? lang.viewAll : lang.viewRelated}\n                          </button>\n                        </th>\n                      )}\n                      {headerGroup.headers.map((header) => {\n                        return (\n                          <th\n                            scope=\"col\"\n                            className={thClasses}\n                            key={header.id}\n                            {...(header.column.getCanSort()\n                              ? {\n                                  onClick: header.column.getToggleSortingHandler(),\n                                  style: { cursor: 'pointer' },\n                                }\n                              : {})}\n                          >\n                            <div className=\"flex justify-center items-center\">\n                              {header.isPlaceholder\n                                ? null\n                                : flexRender(header.column.columnDef.header, header.getContext())}\n                              <span>\n                                {header.column.getIsSorted() ? (\n                                  header.column.getIsSorted() === 'desc' ? (\n                                    <ArrowDownIcon className=\"h-5 w-5\" />\n                                  ) : (\n                                    <ArrowUpIcon className=\"h-5 w-5\" />\n                                  )\n                                ) : (\n                                  ''\n                                )}\n                              </span>\n                              {filters.filter(Boolean).find((item) => item.id === header.column.id) ? (\n                                <MagnifyingGlassCircleIcon className=\"h-5 w-5 text-green-500\" />\n                              ) : (\n                                ''\n                              )}\n                            </div>\n                          </th>\n                        );\n                      })}\n                    </tr>\n                  </React.Fragment>\n                ))}\n              </thead>\n              <tbody className=\"bg-white divide-y divide-gray-200\">\n                {tableInstance.getRowModel().rows.map((row) => {\n                  return (\n                    <tr className=\"hover:bg-gray-100 even:bg-gray-50\" key={row.id}>\n                      {isSelect && (\n                        <td className={tdClasses}>\n                          <Checkbox\n                            onChange={(e) => onSelectHandler(e.target.checked, model && row.original[model.idField])}\n                            checked={!!(model && selected.includes(row.original[model.idField]))}\n                          />\n                        </td>\n                      )}\n                      {connect && (\n                        <td colSpan={2} className={tdClasses}>\n                          <button\n                            type=\"button\"\n                            className={classNames(\n                              buttonClasses,\n                              'bg-transparent text-green-600 hover:bg-green-100 hover:bg-opacity-25',\n                            )}\n                            disabled={model && connect[model.idField] === row.original[model.idField]}\n                            onClick={() =>\n                              onAction(\n                                'connect',\n                                data.find((item) => model && item[model.idField] === row.original[model.idField]),\n                              )\n                            }\n                          >\n                            {model && connect[model.idField] === row.original[model.idField]\n                              ? lang.connected\n                              : lang.connect}\n                          </button>\n                        </td>\n                      )}\n                      {!connect && (\n                        <td\n                          className={tdClasses}\n                          title={actions.update ? lang.editRow : lang.viewRow}\n                          colSpan={actions.delete ? 1 : 2}\n                        >\n                          <ActionButtons.Update id={model ? row.original[model.idField] : 0} />\n                        </td>\n                      )}\n                      {actions.delete && !connect && (\n                        <td className={tdClasses} title={lang.deleteRow} colSpan={1}>\n                          <ActionButtons.Delete id={model ? row.original[model.idField] : 0} />\n                        </td>\n                      )}\n                      {parent && model && fieldUpdate && (\n                        <ListConnect getData={getData} parent={parent} row={row} model={model} />\n                      )}\n                      {row.getVisibleCells().map((cell) => {\n                        return (\n                          <td style={{ maxWidth: '9rem' }} className={tdClasses} key={cell.id}>\n                            {flexRender(cell.column.columnDef.cell, cell.getContext())}\n                          </td>\n                        );\n                      })}\n                    </tr>\n                  );\n                })}\n                <tr>\n                  <td className={tdClasses} colSpan={10000}>\n                    {lang.showing} {tableInstance.getRowModel().rows.length} {lang.of} ~\n                    {controlledPageCount * pagination.pageSize} {lang.results}\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n        <div className={classNames('flex flex-wrap md:justify-between justify-center w-full', tdClasses)}>\n          <nav\n            className=\"w-full md:w-auto  mb-4 md:mb-0 inline-flex -space-x-px rtl:space-x-reverse\"\n            aria-label=\"Pagination\"\n          >\n            <button\n              type=\"button\"\n              onClick={() => tableInstance.setPageIndex(0)}\n              disabled={!tableInstance.getCanPreviousPage()}\n              className=\"relative inline-flex items-center px-2 py-2 border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50 rtl:rounded-r-md ltr:rounded-l-md\"\n            >\n              <ChevronDoubleRightIcon className={classNames('h-4 w-4', dir === 'rtl' ? '' : 'transform rotate-180')} />\n            </button>\n            <button\n              type=\"button\"\n              onClick={() => tableInstance.previousPage()}\n              disabled={!tableInstance.getCanPreviousPage()}\n              className=\"relative inline-flex items-center px-2 py-2 border border-gray-300 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50\"\n            >\n              <ChevronRightIcon className=\"h-4 w-4 ltr:transform ltr:rotate-180\" />\n            </button>\n            {initPages(tableInstance.getPageCount(), pagination.pageIndex + 1, paginationOptions).map((item) => (\n              <button\n                type=\"button\"\n                className={classNames(\n                  item === pagination.pageIndex + 1\n                    ? 'bg-blue-500 text-white hover:bg-blue-700'\n                    : 'bg-white text-gray-700 hover:bg-gray-100',\n                  'relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium',\n                )}\n                key={item}\n                onClick={() => tableInstance.setPageIndex(item - 1)}\n              >\n                {item}\n              </button>\n            ))}\n            <button\n              type=\"button\"\n              onClick={() => tableInstance.nextPage()}\n              disabled={!tableInstance.getCanNextPage()}\n              className=\"relative inline-flex items-center px-2 py-2 border border-gray-300 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50\"\n            >\n              <ChevronLeftIcon className=\"h-4 w-4 ltr:transform ltr:rotate-180\" />\n            </button>\n            <button\n              type=\"button\"\n              onClick={() => tableInstance.setPageIndex(tableInstance.getPageCount() - 1)}\n              disabled={!tableInstance.getCanNextPage()}\n              className={classNames(\n                'relative inline-flex items-center px-2 py-2 border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50',\n                dir === 'rtl' ? 'rounded-l-md' : 'rounded-r-md',\n              )}\n            >\n              <ChevronDoubleLeftIcon className={classNames('h-4 w-4', dir === 'rtl' ? '' : 'transform rotate-180')} />\n            </button>\n          </nav>\n          <div className=\"inline-flex justify-center -space-x-px w-full md:w-auto rtl:space-x-reverse\">\n            {pageSizeOptions.map((item, index) => (\n              <button\n                type=\"button\"\n                key={index}\n                className={classNames(\n                  index === 0\n                    ? 'rtl:rounded-r-md ltr:rounded-l-md'\n                    : index === pageSizeOptions.length - 1\n                      ? 'rtl:rounded-l-md ltr:rounded-r-md'\n                      : '',\n                  item === pagination.pageSize\n                    ? 'bg-blue-500 text-white hover:bg-blue-700'\n                    : 'bg-white text-gray-700 hover:bg-gray-100',\n                  'relative inline-flex items-center px-2 py-1 border border-gray-300  text-sm font-medium',\n                )}\n                onClick={() => tableInstance.setPageSize(item)}\n              >\n                {item}\n              </button>\n            ))}\n          </div>\n        </div>\n      </div>\n    </>\n  );\n};\n","import React, { useCallback, useContext, useState } from 'react';\nimport { TableContext } from '../Context';\n\nconst filterMemo = (modelName: string, filter: any, models: any[]) => {\n  const initialValue: any[] = [];\n  if (filter) {\n    const model = models.find((item: any) => item.id === modelName);\n    Object.keys(filter).forEach((key) => {\n      if (model && filter[key]) {\n        // filter by model field type\n        const field = model.fields.find((item: any) => item.type === key);\n        const fieldModel = models.find((item: any) => item.id === field?.type);\n        if (fieldModel) {\n          const isField = fieldModel.fields.find((field: any) => field.name === fieldModel.idField);\n          const filterValue = {\n            [fieldModel.idField]: {\n              equals: isField?.type === 'String' ? filter[key] : Number.parseInt(filter[key], 10),\n            },\n          };\n          const value = field?.list ? { some: filterValue } : { is: filterValue };\n          initialValue.push({\n            id: field ? field.name : key,\n            value,\n          });\n        }\n        // filter by model field name\n        const fieldByName = model.fields.find((item: any) => item.name === key);\n        if (fieldByName) {\n          initialValue.push({\n            id: key,\n            value: {\n              equals: fieldByName.type === 'String' ? filter[key] : Number.parseInt(filter[key], 10),\n            },\n          });\n        }\n      }\n    });\n  }\n  return initialValue;\n};\n\nfunction isObject(item: any) {\n  return item && typeof item === 'object' && !Array.isArray(item);\n}\n\nfunction mergeDeep(target: any, ...sources: any[]): any {\n  if (!sources.length) return target;\n  const source: any = sources.shift();\n\n  if (isObject(target) && isObject(source)) {\n    for (const key in source) {\n      if (isObject(source[key])) {\n        if (!target[key]) Object.assign(target, { [key]: {} });\n        mergeDeep(target[key], source[key]);\n      } else {\n        Object.assign(target, { [key]: source[key] });\n      }\n    }\n  }\n\n  return mergeDeep(target, ...sources);\n}\n\nconst handleFilter = (filters: { id: string; value: any }[]) => {\n  if (filters.length) {\n    const newWhere: Record<string, Record<string, any>> = {};\n    filters.forEach((item) => {\n      // Check if an entry with the same id already exists\n      if (newWhere[item.id]) {\n        // If the value for the existing entry is an object, and the new value is also an object, merge them\n        if (isObject(newWhere[item.id]) && isObject(item.value)) {\n          newWhere[item.id] = mergeDeep(newWhere[item.id], item.value);\n        } else {\n          // Otherwise, just overwrite it (or you can handle it differently if needed)\n          newWhere[item.id] = item.value;\n        }\n      } else {\n        newWhere[item.id] = item.value;\n      }\n    });\n    return newWhere;\n  }\n  return undefined;\n};\n\nexport type OrderBy = Record<string, 'asc' | 'desc' | { sort: 'asc' | 'desc'; nulls: 'last' | 'first' }>;\n\nexport const useFilterAndSort = (model: string, filter?: any, defaultOrder?: OrderBy[]) => {\n  const {\n    schema: { models },\n  } = useContext(TableContext);\n\n  const initialFilter = React.useMemo(() => {\n    return filterMemo(model, filter, models);\n  }, [model, filter, models]);\n\n  const [where, setWhere] = useState<any>(handleFilter(initialFilter));\n  const [orderBy, setOrderBy] = useState<OrderBy[] | undefined>(defaultOrder);\n\n  const filterHandler = useCallback((filters: { id: string; value: any }[]) => {\n    setWhere(handleFilter(JSON.parse(JSON.stringify(filters))));\n  }, []);\n\n  const sortByHandler = useCallback(\n    (sortBy: { id: string; desc: boolean }[]) => {\n      if (sortBy.length > 0) {\n        const newOrderBy: OrderBy[] = [];\n        sortBy.forEach((item) => {\n          const field = item.id.split('.')[0];\n          const modelObject = models.find((item) => item.id === model);\n          const fieldModel = modelObject?.fields.find((item) => item.name === field);\n          newOrderBy.push({\n            [field]: fieldModel?.required\n              ? item.desc\n                ? 'desc'\n                : 'asc'\n              : { sort: item.desc ? 'desc' : 'asc', nulls: 'last' },\n          });\n        });\n        setOrderBy(newOrderBy);\n      } else {\n        setOrderBy(defaultOrder);\n      }\n    },\n    [models, model, defaultOrder],\n  );\n\n  return {\n    where,\n    orderBy,\n    initialFilter,\n    filterHandler,\n    sortByHandler,\n  };\n};\n","import { useLazyQuery, useMutation } from '@apollo/client/react';\nimport React, { useContext, useEffect, useState } from 'react';\nimport Modal from '../components/Modal';\nimport type { ContextProps, TableParentRecord } from '../types';\nimport { TableContext } from './Context';\nimport EditRecord from './EditRecord';\nimport Form from './Form';\nimport { mutationDocument, queryDocument } from './QueryDocument';\nimport { Table } from './Table';\nimport { useFilterAndSort } from './Table/useFilterAndSort';\n\ninterface OperationVariables {\n  where: any;\n  orderBy?: any[];\n  take: number;\n  skip: number;\n}\n\nexport interface DynamicTableProps {\n  parent?: TableParentRecord;\n  inEdit?: boolean;\n  model: string;\n  filter?: unknown;\n  connect?: any;\n  headerActions?: any;\n  onConnect?: (value: any) => void;\n  children?:\n    | ((options: {\n        context: ContextProps;\n        query: {\n          variables: {\n            where: any;\n            orderBy?: any[];\n            take: number;\n            skip: number;\n          };\n          data?: any;\n          loading: boolean;\n          error?: Error;\n          getData: (...args: any[]) => any;\n        };\n      }) => React.ReactNode)\n    | null;\n}\nconst DynamicTable: React.FC<DynamicTableProps> = ({\n  model,\n  inEdit,\n  filter,\n  parent,\n  connect,\n  onConnect,\n  children,\n  headerActions,\n}) => {\n  const context = useContext(TableContext);\n  const {\n    schema: { models },\n    query,\n    onCancelCreate,\n    onSaveCreate,\n    onSaveUpdate,\n    push,\n    pagesPath,\n    pageSize,\n    defaultOrderBy,\n  } = context;\n  const [page, setPage] = useState({\n    take: pageSize,\n    skip: 0,\n  });\n  const [create, setCreate] = useState(false);\n  const modelObject = models.find((item) => item.id === model);\n\n  const { where, orderBy, filterHandler, sortByHandler, initialFilter } = useFilterAndSort(\n    model,\n    inEdit ? filter : query,\n    defaultOrderBy ? defaultOrderBy[model] : undefined,\n  );\n\n  const variables: OperationVariables = {\n    where,\n    orderBy,\n    ...page,\n  };\n\n  const [execQuery, { data, loading, error }] = useLazyQuery(queryDocument(models, model), {\n    fetchPolicy: 'no-cache',\n  });\n  const getData = React.useCallback(() => execQuery({ variables }), [execQuery, variables]);\n  const whereRef = React.useRef(where);\n\n  useEffect(() => {\n    if (\n      where &&\n      whereRef.current &&\n      where !== whereRef.current &&\n      Object.keys(whereRef.current).length === Object.keys(where).length\n    ) {\n      getData();\n    }\n    whereRef.current = where;\n  }, [where, getData]);\n\n  const [deleteOne] = useMutation(mutationDocument(models, model, 'delete'));\n\n  useEffect(() => {\n    let timeOut: NodeJS.Timeout;\n    if ((!(query?.update || query?.view) || inEdit) && !data && !loading && !error) {\n      timeOut = setTimeout(() => {\n        getData();\n      }, 5);\n    }\n    return () => {\n      clearTimeout(timeOut);\n    };\n  }, [data, loading, query, error, getData, inEdit]);\n\n  const fetchMoreHandler = (pageSize: number, pageIndex: number) => {\n    if (pageSize !== page.take || pageSize * pageIndex !== page.skip) {\n      setPage({\n        take: pageSize,\n        skip: pageSize * pageIndex,\n      });\n    }\n  };\n\n  const onAction = (action: 'create' | 'delete' | 'connect', value?: unknown) => {\n    switch (action) {\n      case 'delete':\n        if (modelObject) {\n          deleteOne({\n            variables: {\n              where: {\n                [modelObject.idField]: value,\n              },\n            },\n          }).then(() => {\n            getData();\n          });\n        }\n        break;\n      case 'create':\n        setCreate(true);\n        break;\n      case 'connect':\n        if (onConnect) {\n          onConnect(value);\n        }\n        break;\n    }\n  };\n\n  const onCreateCancel =\n    onCancelCreate ||\n    (() => {\n      setCreate(false);\n    });\n\n  const onCreateSave =\n    onSaveCreate ||\n    (() => {\n      setCreate(false);\n      void parent?.updateRecord?.();\n      getData();\n    });\n\n  const onUpdateSave =\n    onSaveUpdate ||\n    (() => {\n      push(pagesPath + model);\n      getData();\n    });\n\n  const parentName = modelObject?.fields.find((item) => item.type === parent?.name)?.name;\n  const _data: any[] = data ? (data as any)[`findMany${model}`] : [];\n  return (\n    <>\n      {children?.({\n        context,\n        query: { variables, data, getData, loading, error },\n      })}\n      <Modal on={create} toggle={() => setCreate(!create)}>\n        <Form\n          model={model}\n          action=\"create\"\n          data={inEdit && parentName ? { [parentName]: parent?.value } : {}}\n          onCancel={() => onCreateCancel({ model, setCreateModal: setCreate })}\n          onSave={() =>\n            onCreateSave({\n              model,\n              setCreateModal: setCreate,\n              refetchTable: getData,\n            })\n          }\n        />\n      </Modal>\n      {(query?.update || query?.view) && !inEdit ? (\n        <EditRecord\n          model={model}\n          update={query.update}\n          view={query?.view}\n          onSave={() => onUpdateSave({ model, refetchTable: getData })}\n        />\n      ) : (\n        <Table\n          getData={getData}\n          parent={parent}\n          connect={connect}\n          inEdit={inEdit}\n          onAction={onAction}\n          headerActions={headerActions}\n          model={model}\n          data={\n            connect && Object.keys(connect).length > 0\n              ? [connect].concat(\n                  _data.filter((item) => modelObject && item[modelObject.idField] !== connect[modelObject.idField]),\n                )\n              : _data\n          }\n          fetchMore={fetchMoreHandler}\n          loading={loading}\n          filterHandler={filterHandler}\n          sortByHandler={sortByHandler}\n          initialFilter={initialFilter}\n          pageCount={data ? Math.ceil((data as any)[`findCount${model}`] / page.take) : 0}\n        />\n      )}\n    </>\n  );\n};\n\nexport default DynamicTable;\n","import { useQuery } from '@apollo/client/react';\nimport type React from 'react';\n\nimport { GET_SCHEMA } from '../SchemaQueries';\nimport Spinner from '../components/Spinner';\nimport type { ContextProps, ModelTableProps } from '../types';\nimport { TableContext, defaultSettings, useTableContext } from './Context';\nimport DynamicTable from './dynamicTable';\nimport defaultLanguage from './language';\n\nconst PrismaTable: React.FC<ModelTableProps> = ({ children, language, model, ...rest }) => {\n  const { data, loading } = useQuery<{ getSchema: ContextProps['schema'] }>(GET_SCHEMA);\n  if (loading) return <Spinner />;\n  const mergedLanguage = { ...defaultLanguage, ...language };\n  return (\n    <TableContext.Provider\n      value={{\n        schema: data?.getSchema ?? {\n          models: [],\n          enums: [],\n        },\n        ...({ ...defaultSettings, ...rest } as any),\n        lang: mergedLanguage,\n      }}\n    >\n      <DynamicTable model={model}>{children}</DynamicTable>\n    </TableContext.Provider>\n  );\n};\n\nexport { PrismaTable, TableContext, useTableContext };\nexport * from './Form/Inputs';\nexport * from './Table/Filters';\n","import { KeyboardSensor, MouseSensor, TouchSensor, useSensor, useSensors } from '@dnd-kit/core';\nimport { sortableKeyboardCoordinates } from '@dnd-kit/sortable';\n\nexport const useDndSensors = () => {\n  return useSensors(\n    useSensor(MouseSensor, {\n      // Require mouse to move 8px before activating drag\n      activationConstraint: {\n        distance: 8,\n      },\n    }),\n    useSensor(TouchSensor, {\n      // On touch devices, require 200ms delay before activating drag\n      // This prevents accidental drags while scrolling\n      activationConstraint: {\n        delay: 200,\n        tolerance: 8,\n      },\n    }),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates,\n    }),\n  );\n};\n","import { useMutation } from '@apollo/client/react';\nimport type React from 'react';\nimport { useState } from 'react';\nimport { UPDATE_FIELD } from '../SchemaQueries';\nimport Checkbox from '../components/Checkbox';\nimport { inputClasses } from '../components/css';\nimport type { AdminSchemaField } from '../types';\nimport type { SettingLanguage } from './index';\n\ntype Fields = 'read' | 'create' | 'update' | 'filter' | 'sort' | 'editor' | 'upload';\n\nconst fields: { [key in keyof SettingLanguage]?: Fields[] } = {\n  tableView: ['read', 'filter', 'sort'],\n  actions: ['create', 'update'],\n  inputType: ['editor', 'upload'],\n};\n\nconst UpdateField: React.FC<{\n  field: AdminSchemaField;\n  model: string;\n  language: SettingLanguage;\n}> = ({ field, model, language }) => {\n  const [updateField] = useMutation(UPDATE_FIELD);\n  const [title, setTitle] = useState<{\n    value: string;\n    typingTimeout?: NodeJS.Timeout;\n  }>({\n    value: field.title,\n  });\n\n  const onChangeHandler = (name: string, value: boolean | string) => {\n    updateField({\n      variables: {\n        id: field.id,\n        modelId: model,\n        data: {\n          [name]: value,\n        },\n      },\n    });\n  };\n\n  const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const newValue = event.target.value;\n    if (title.typingTimeout) clearTimeout(title.typingTimeout);\n    setTitle({\n      value: newValue,\n      typingTimeout: setTimeout(() => {\n        onChangeHandler('title', newValue);\n      }, 1000),\n    });\n  };\n\n  return (\n    <div className=\"flex flex-wrap w-full space-y-2.5\">\n      <div className=\"flex w-full items-center\">\n        <div className=\"w-1/3 text-gray-400\">{language.dbName}</div>\n        <div className=\"w-2/3 text-gray-400\">{field.name}</div>\n      </div>\n      <div className=\"flex w-full items-center\">\n        <div className=\"w-1/3 text-gray-400\">{language.displayName}</div>\n        <div className=\"w-2/3\">\n          <input\n            name=\"name\"\n            value={title.value}\n            placeholder={language.fieldName}\n            onChange={onChange}\n            className={inputClasses}\n          />\n        </div>\n      </div>\n      {(Object.keys(fields) as (keyof SettingLanguage)[]).map((key) => (\n        <div key={key} className=\"flex w-full items-center\">\n          <div className=\"w-1/3 text-gray-400\">{language[key]}</div>\n          <div className=\"flex w-2/3\">\n            {fields[key]?.map((item) => (\n              <div key={item} className=\"w-1/3\">\n                <Checkbox\n                  label={language[item]}\n                  id={field.id + item}\n                  disabled={field.relationField && ['create', 'update'].includes(item)}\n                  checked={field[item]}\n                  onChange={(e) => onChangeHandler(item, e.target.checked)}\n                />\n              </div>\n            ))}\n          </div>\n        </div>\n      ))}\n    </div>\n  );\n};\nexport default UpdateField;\n","import { useMutation } from '@apollo/client/react';\nimport type React from 'react';\nimport { useRef, useState } from 'react';\nimport { UPDATE_MODEL } from '../SchemaQueries';\nimport Checkbox from '../components/Checkbox';\nimport Select from '../components/Select';\nimport { inputClasses } from '../components/css';\nimport type { AdminSchemaModel } from '../types';\nimport type { SettingLanguage } from './index';\n\ntype Fields = 'delete' | 'create' | 'update';\ninterface Option {\n  name: string;\n  id: string;\n  unavailable?: boolean;\n}\nconst fieldsArray: Fields[] = ['create', 'update', 'delete'];\n\nconst UpdateModel: React.FC<{\n  models: AdminSchemaModel[];\n  modelObject: AdminSchemaModel;\n  language: SettingLanguage;\n}> = ({ models, modelObject, language }) => {\n  const [updateModel] = useMutation(UPDATE_MODEL);\n  const [title, setTitle] = useState<{\n    value: string;\n    typingTimeout?: NodeJS.Timeout;\n  }>({\n    value: modelObject.name,\n  });\n  const titleRef = useRef(modelObject.name);\n\n  if (titleRef.current !== modelObject.name) {\n    titleRef.current = modelObject.name;\n    setTitle({\n      value: modelObject.name,\n    });\n  }\n\n  const onChangeHandler = (name: string, value: boolean | string | string[]) => {\n    updateModel({\n      variables: {\n        id: modelObject.id,\n        data: {\n          [name]: value,\n        },\n      },\n    });\n  };\n\n  const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const newValue = event.target.value;\n    if (title.typingTimeout) clearTimeout(title.typingTimeout);\n    setTitle({\n      value: newValue,\n      typingTimeout: setTimeout(() => {\n        onChangeHandler('name', newValue);\n      }, 1000),\n    });\n  };\n\n  const values: { id: string; name: string }[] = [];\n  const allOptions: Option[] = [];\n  //const modelsList: string[] = [];\n  const getOptions = (model: AdminSchemaModel, parent = '') => {\n    const options: Option[] = [];\n    //modelsList.push(model.id);\n    model.fields\n      .filter((item) => !item.list)\n      .slice()\n      .sort((a, b) => {\n        const aObject = Number(a.kind === 'object');\n        const bObject = Number(b.kind === 'object');\n        return aObject - bObject || a.order - b.order;\n      })\n      .forEach((item) => {\n        if (item.kind !== 'object') {\n          const option = {\n            id: parent ? `${parent}.${item.name}` : item.name,\n            name: item.title,\n          };\n          if (modelObject.displayFields.includes(option.id)) {\n            values.push(option);\n          }\n          void (parent ? options.push(option) : allOptions.push(option));\n        } else {\n          if (item.type !== model.id && !parent) {\n            getOptions(models.find((item2) => item2.id === item.type)!, parent ? `${parent}.${item.name}` : item.name);\n          }\n        }\n      });\n    if (parent) {\n      allOptions.push({\n        id: model.id,\n        unavailable: true,\n        name: model.name,\n      });\n      allOptions.push(...options);\n    }\n  };\n\n  getOptions(modelObject);\n\n  // HeadlessUI v2 multiple mode passes the entire new selection array\n  const onChangeMultiSelect = (selectedOptions: Option[]) => {\n    const value = selectedOptions.map((v) => v.id);\n    if (value && value.length > 0) {\n      onChangeHandler('displayFields', value);\n    }\n  };\n\n  const idField = modelObject.fields.find((item) => item.name === modelObject.idField);\n  return (\n    <>\n      <div className=\"flex w-full items-center\">\n        <div className=\"w-1/3 text-gray-400\">{language.dbName}</div>\n        <div className=\"w-2/3 col-span-2 text-gray-400\">{modelObject.id}</div>\n      </div>\n      <div className=\"flex w-full items-center\">\n        <div className=\"w-1/3 text-gray-400\">{language.displayName}</div>\n        <div className=\"w-2/3\">\n          <input\n            name=\"name\"\n            value={title.value}\n            placeholder={language.modelName}\n            onChange={onChange}\n            className={inputClasses}\n          />\n        </div>\n      </div>\n      <div className=\"flex w-full items-center\">\n        <div className=\"w-1/3 text-gray-400\">{language.idField}</div>\n        <Select\n          dir={language.dir}\n          popupFullWidth\n          className=\"w-2/3\"\n          value={{\n            id: idField?.name ?? '',\n            name: idField?.title ?? 'No ID',\n          }}\n          onChange={(option: any) => onChangeHandler('idField', option.id)}\n          options={modelObject.fields\n            .filter((item) => item.isId || item.unique)\n            .map((item) => ({ id: item.name, name: item.title }))}\n        />\n      </div>\n      <div className=\"flex w-full items-center\">\n        <div className=\"w-1/3 text-gray-400\">{language.displayFields}</div>\n        <Select\n          popupFullWidth\n          dir={language.dir}\n          className=\"w-2/3\"\n          value={values}\n          onChange={onChangeMultiSelect}\n          options={allOptions}\n          multiple\n        />\n      </div>\n      <div className=\"flex w-full items-center\">\n        <div className=\"w-1/3 text-gray-400\">{language.actions}</div>\n        <div className=\"w-2/3 flex\">\n          {fieldsArray.map((key, index) => (\n            <Checkbox\n              key={key}\n              id={key + index}\n              label={language[key]}\n              checked={modelObject[key]}\n              onChange={(e) => onChangeHandler(key, e.target.checked)}\n            />\n          ))}\n        </div>\n      </div>\n    </>\n  );\n};\nexport default UpdateModel;\n","import { useMutation, useQuery } from '@apollo/client/react';\nimport { DndContext, type DragEndEvent, closestCenter } from '@dnd-kit/core';\nimport { SortableContext, arrayMove, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { Bars3Icon, ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/solid';\nimport React, { useRef, useState } from 'react';\nimport { GET_SCHEMA, UPDATE_MODEL } from '../SchemaQueries';\nimport Select from '../components/Select';\nimport { classNames } from '../components/css';\nimport { useDndSensors } from '../lib/dnd';\nimport type { AdminSchemaField, AdminSchemaModel, ContextProps } from '../types';\nimport UpdateField from './UpdateField';\nimport UpdateModel from './UpdateModel';\n\nconst defaultLanguage = {\n  dir: 'ltr',\n  header: 'Update models Tables',\n  dbName: 'Database Name',\n  displayName: 'Display Name',\n  modelName: 'Model Name',\n  idField: 'Id Field',\n  displayFields: 'Display Fields',\n  fieldName: 'Field Name',\n  actions: 'Actions',\n  create: 'Create',\n  update: 'Update',\n  delete: 'Delete',\n  read: 'Read',\n  filter: 'Filter',\n  sort: 'Sort',\n  editor: 'Editor',\n  upload: 'Upload',\n  tableView: 'Table View',\n  inputType: 'Input Type',\n};\n\nexport type SettingLanguage = typeof defaultLanguage;\n\n// Error boundary for drag and drop operations\nclass DragDropErrorBoundary extends React.Component<{ children: React.ReactNode }, { hasError: boolean }> {\n  constructor(props: { children: React.ReactNode }) {\n    super(props);\n    this.state = { hasError: false };\n  }\n\n  static getDerivedStateFromError() {\n    return { hasError: true };\n  }\n\n  componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n    console.error('Drag and drop error:', error, errorInfo);\n  }\n\n  render() {\n    if (this.state.hasError) {\n      return <div className=\"text-red-600 p-4\">Something went wrong with drag and drop. Please refresh the page.</div>;\n    }\n\n    return this.props.children;\n  }\n}\n\ninterface SortableItemProps {\n  field: AdminSchemaField;\n  model: string;\n  isOpen: boolean;\n  onToggle: () => void;\n  language: SettingLanguage;\n  accordionRef: React.MutableRefObject<(HTMLDivElement | null)[]>;\n  index: number;\n  dir: string;\n}\n\nconst SortableItem: React.FC<SortableItemProps> = ({\n  field,\n  model,\n  isOpen,\n  onToggle,\n  language,\n  accordionRef,\n  index,\n  dir,\n}) => {\n  const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ id: field.id });\n\n  const style = {\n    transform: CSS.Transform.toString(transform),\n    transition,\n    opacity: isDragging ? 0.5 : 1,\n  };\n\n  return (\n    <li ref={setNodeRef} style={style} className=\"flex flex-col w-full bg-white relative mb-2 rounded-md shadow-lg\">\n      <div\n        className={classNames(\n          'flex items-center justify-between text-gray-700 w-full px-8 py-6 cursor-pointer',\n          isOpen ? 'border-b border-gray-200' : '',\n        )}\n        onClick={onToggle}\n      >\n        <div className={classNames('flex items-center space-x-2.5', dir === 'rtl' ? 'space-x-reverse' : '')}>\n          <button\n            type=\"button\"\n            {...attributes}\n            {...listeners}\n            className=\"cursor-grab\"\n            aria-label=\"Drag to reorder\"\n            aria-pressed={isDragging}\n          >\n            <Bars3Icon className=\"h-5 w-5 text-blue-700\" />\n          </button>\n          <span>{field.title}</span>\n        </div>\n        {isOpen ? <ChevronUpIcon className=\"h-5 w-5\" /> : <ChevronDownIcon className=\"h-5 w-5\" />}\n      </div>\n\n      <div\n        ref={(r) => {\n          accordionRef.current[index] = r;\n        }}\n        className=\"relative overflow-hidden transition-all max-h-0 duration-500\"\n        style={\n          isOpen\n            ? {\n                maxHeight: `${accordionRef.current[index]?.scrollHeight}px`,\n              }\n            : {}\n        }\n      >\n        <div className=\"p-6\">\n          <UpdateField field={field} model={model} language={language} />\n        </div>\n      </div>\n    </li>\n  );\n};\n\nexport const Settings: React.FC<{\n  language?: Partial<SettingLanguage>;\n}> = ({ language }) => {\n  const { data } = useQuery<{ getSchema: ContextProps['schema'] }>(GET_SCHEMA);\n  const models = data?.getSchema.models ?? [];\n  const [updateModel] = useMutation(UPDATE_MODEL);\n  const [currentModel, setCurrentModel] = useState<AdminSchemaModel>();\n  const dataRef = useRef(models);\n  const accordionRef = useRef<(HTMLDivElement | null)[]>([]);\n  const [openedField, setOpenedField] = useState('');\n\n  const sensors = useDndSensors();\n\n  if (!currentModel && models.length > 0) setCurrentModel(models[0]);\n\n  if (dataRef.current !== models && models.length > 0 && currentModel) {\n    dataRef.current = models;\n    setCurrentModel(models.find((model) => model.id === currentModel.id));\n  }\n\n  const handleDragEnd = (event: DragEndEvent) => {\n    const { active, over } = event;\n\n    if (active.id !== over?.id && currentModel && over) {\n      const sortedFields = currentModel.fields.slice().sort((a, b) => a.order - b.order);\n      const oldIndex = sortedFields.findIndex((field) => field.id === active.id);\n      const newIndex = sortedFields.findIndex((field) => field.id === over?.id);\n\n      const newFieldsOrder = arrayMove(sortedFields, oldIndex, newIndex).map((field, index) => {\n        const fieldCopy: any = { ...field };\n        delete fieldCopy.__typename;\n        return { ...fieldCopy, order: index + 1 };\n      });\n\n      updateModel({\n        variables: {\n          id: currentModel.id,\n          data: {\n            fields: newFieldsOrder,\n          },\n        },\n      });\n\n      setCurrentModel({\n        ...currentModel,\n        fields: newFieldsOrder,\n      });\n    }\n  };\n\n  const mergeLanguage = { ...defaultLanguage, ...language };\n  const dir = mergeLanguage.dir;\n  const sortedFields = currentModel?.fields.slice().sort((a, b) => a.order - b.order) || [];\n\n  return (\n    <div className=\"flex w-full flex-wrap\">\n      <div className={classNames('lg:w-1/2 w-full', dir === 'rtl' ? 'lg:pl-4' : 'lg:pr-4')}>\n        <div className=\"flex flex-col bg-white rounded shadow-lg text-gray-800 mb-5\">\n          <header className=\"p-4 rounded-t border-b border-gray-100\">{mergeLanguage.header}</header>\n          <div className=\"relative p-4 flex-auto overflow-auto\" style={{ overflow: 'visible' }}>\n            <div className=\"w-full\" style={{ marginBottom: '20px' }}>\n              {currentModel && (\n                <Select\n                  value={{ id: currentModel.id, name: currentModel.name }}\n                  onChange={(option: any) => setCurrentModel(models.find((model) => model.id === option.id))}\n                  options={models.map((model) => ({\n                    id: model.id,\n                    name: model.name,\n                  }))}\n                  dir={dir}\n                  popupFullWidth\n                />\n              )}\n            </div>\n            <div className=\"flex w-full flex-wrap space-y-4\">\n              {currentModel && <UpdateModel models={models} modelObject={currentModel} language={mergeLanguage} />}\n            </div>\n          </div>\n        </div>\n      </div>\n      <div className=\"lg:w-1/2 w-full\">\n        {currentModel && (\n          <DragDropErrorBoundary>\n            <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n              <SortableContext items={sortedFields.map((f) => f.id)} strategy={verticalListSortingStrategy}>\n                <ul className=\"shadow-box\">\n                  {sortedFields.map((field, index) => (\n                    <SortableItem\n                      key={field.id}\n                      field={field}\n                      model={currentModel.id}\n                      isOpen={field.id === openedField}\n                      onToggle={() => setOpenedField(field.id === openedField ? '' : field.id)}\n                      language={mergeLanguage}\n                      accordionRef={accordionRef}\n                      index={index}\n                      dir={dir}\n                    />\n                  ))}\n                </ul>\n              </SortableContext>\n            </DndContext>\n          </DragDropErrorBoundary>\n        )}\n      </div>\n    </div>\n  );\n};\n"]}