import * as Boolean from "./boolean.ts" import * as File from "./file.ts" import * as Form from "./form.ts" import * as MultiSelect from "./multi-select.ts" import * as Number from "./number.ts" import * as Select from "./select.ts" import * as Text from "./text.ts" interface InternalInputorControllerDict { [Form.FormInputorController.inputorTypeName]: Form.FormInputorController [Boolean.BooleanInputorController.inputorTypeName]: Boolean.BooleanInputorController [Number.NumberInputorController.inputorTypeName]: Number.NumberInputorController [Text.TextInputorController.inputorTypeName]: Text.TextInputorController [File.FileInputorController.inputorTypeName]: File.FileInputorController [Select.SelectInputorController.inputorTypeName]: Select.SelectInputorController [MultiSelect.MultiSelectInputorController .inputorTypeName]: MultiSelect.MultiSelectInputorController // Year // Month // Day // Hour // Minute // Second // Week // Time // TimeRange // Url // Color } export type InputorControllerUnion = InternalInputorControllerDict[keyof InternalInputorControllerDict] export type InputorSchemaUnion = InputorControllerUnion["schemaType"] export type InputorControllerOptionsUnion = InputorControllerUnion["optionsType"] export type InputorControllerConstructorUnion = InputorControllerUnion["constructorType"] export type GeneralUpdateSchema = ( schema: Controller["schemaType"], ) => Promise export type GeneralUpdateValue = ( value: Controller["schemaType"]["value"], ) => Promise export interface SupportInputor { controller?: Controller | undefined controllerOptions?: Controller["optionsType"] | undefined } export interface SupportBoolean { controller?: Boolean.BooleanInputorController | undefined controllerOptions?: Boolean.BooleanInputorControllerOptions | undefined } export const boolean = ( options: Boolean.BooleanInputorControllerOptions, ): Boolean.BooleanInputorController => { return new Boolean.BooleanInputorController(options) } export interface SupportNumber { controller?: Number.NumberInputorController | undefined controllerOptions?: Number.NumberInputorControllerOptions | undefined } export const number = ( options: Number.NumberInputorControllerOptions, ): Number.NumberInputorController => { return new Number.NumberInputorController(options) } export interface SupportText { controller?: Text.TextInputorController | undefined controllerOptions?: Text.TextInputorControllerOptions | undefined } export const text = (options: Text.TextInputorControllerOptions): Text.TextInputorController => { return new Text.TextInputorController(options) } export interface SupportFile { controller?: File.FileInputorController | undefined controllerOptions?: File.FileInputorControllerOptions | undefined } export const file = (options: File.FileInputorControllerOptions): File.FileInputorController => { return new File.FileInputorController(options) } export interface SupportSelect { controller?: Select.SelectInputorController | undefined controllerOptions?: Select.SelectInputorControllerOptions | undefined } export const select = ( options: Select.SelectInputorControllerOptions, ): Select.SelectInputorController => { return new Select.SelectInputorController(options) } export interface SupportMultiSelect { controller?: MultiSelect.MultiSelectInputorController | undefined controllerOptions?: MultiSelect.MultiSelectInputorControllerOptions | undefined } export const multiSelect = ( options: MultiSelect.MultiSelectInputorControllerOptions, ): MultiSelect.MultiSelectInputorController => { return new MultiSelect.MultiSelectInputorController(options) } export interface SupportForm< // eslint-disable-next-line @typescript-eslint/no-explicit-any ExternalValue = any, // eslint-disable-next-line @typescript-eslint/no-explicit-any Items extends Form.FormInputorControllerItems = any, > { controller?: Form.FormInputorController | undefined controllerOptions?: Form.FormInputorControllerOptions | undefined } // eslint-disable-next-line @typescript-eslint/no-explicit-any export const form = ( options: Form.FormInputorControllerOptions, ): Form.FormInputorController => { return new Form.FormInputorController(options) }