## :toolbox: Functions

- [isPlainObject](#gear-isplainobject)
- [mergeDeep](#gear-mergedeep)
- [getData](#gear-getdata)
- [setData](#gear-setdata)
- [defData](#gear-defdata)
- [removeData](#gear-removedata)
- [prepareData](#gear-preparedata)
- [domready](#gear-domready)
- [selectOne](#gear-selectone)
- [selectOne](#gear-selectone)
- [selectOne](#gear-selectone)
- [selectOne](#gear-selectone)
- [selectOne](#gear-selectone)
- [selectAll](#gear-selectall)
- [selectAll](#gear-selectall)
- [selectAll](#gear-selectall)
- [selectAll](#gear-selectall)
- [selectAll](#gear-selectall)
- [getBoundedInstance](#gear-getboundedinstance)
- [getBoundedInstance](#gear-getboundedinstance)
- [getBoundedInstance](#gear-getboundedinstance)
- [getBoundedInstanceList](#gear-getboundedinstancelist)
- [module](#gear-module)
- [module](#gear-module)
- [module](#gear-module)
- [module](#gear-module)
- [module](#gear-module)
- [h](#gear-h)
- [h](#gear-h)
- [html](#gear-html)
- [delegate](#gear-delegate)
- [injectCssToDocument](#gear-injectcsstodocument)
- [injectCssToDocument](#gear-injectcsstodocument)
- [injectCssToDocument](#gear-injectcsstodocument)
- [animateTo](#gear-animateto)
- [base64UrlEncode](#gear-base64urlencode)
- [base64UrlDecode](#gear-base64urldecode)
- [serial](#gear-serial)
- [watchAttributes](#gear-watchattributes)
- [forceArray](#gear-forcearray)
- [debounce](#gear-debounce)
- [throttle](#gear-throttle)
- [isDebug](#gear-isdebug)
- [nextTick](#gear-nexttick)
- [wait](#gear-wait)
- [useLang](#gear-uselang)
- [trans](#gear-trans)
- [__](#gear-__)
- [useScriptImport](#gear-usescriptimport)
- [doImport](#gear-doimport)
- [useImport](#gear-useimport)
- [useImport](#gear-useimport)
- [useImport](#gear-useimport)
- [useImport](#gear-useimport)
- [useImport](#gear-useimport)
- [useSeriesImport](#gear-useseriesimport)
- [useSeriesImport](#gear-useseriesimport)
- [useSeriesImport](#gear-useseriesimport)
- [useSeriesImport](#gear-useseriesimport)
- [useSeriesImport](#gear-useseriesimport)
- [useCssIncludes](#gear-usecssincludes)
- [useCssImport](#gear-usecssimport)
- [useCheckboxesMultiSelect](#gear-usecheckboxesmultiselect)
- [useCheckboxesMultiSelect](#gear-usecheckboxesmultiselect)
- [useCheckboxesMultiSelect](#gear-usecheckboxesmultiselect)
- [useFieldCascadeSelect](#gear-usefieldcascadeselect)
- [useFieldFileDrag](#gear-usefieldfiledrag)
- [useFieldFlatpickr](#gear-usefieldflatpickr)
- [createCallback](#gear-createcallback)
- [useFieldModalSelect](#gear-usefieldmodalselect)
- [useFieldModalTree](#gear-usefieldmodaltree)
- [useFieldRepeatable](#gear-usefieldrepeatable)
- [createHttpClient](#gear-createhttpclient)
- [useFieldSingleImageDrag](#gear-usefieldsingleimagedrag)
- [useFormAsync](#gear-useformasync)
- [useFormAsync](#gear-useformasync)
- [useFormAsync](#gear-useformasync)
- [useForm](#gear-useform)
- [useForm](#gear-useform)
- [useForm](#gear-useform)
- [useFormComponent](#gear-useformcomponent)
- [useGridAsync](#gear-usegridasync)
- [useGrid](#gear-usegrid)
- [useGridComponent](#gear-usegridcomponent)
- [useHttpClient](#gear-usehttpclient)
- [useIframeModal](#gear-useiframemodal)
- [useListDependent](#gear-uselistdependent)
- [useListDependent](#gear-uselistdependent)
- [useListDependent](#gear-uselistdependent)
- [useQueue](#gear-usequeue)
- [createQueue](#gear-createqueue)
- [get](#gear-get)
- [get](#gear-get)
- [create](#gear-create)
- [destroy](#gear-destroy)
- [useS3Uploader](#gear-uses3uploader)
- [useS3Uploader](#gear-uses3uploader)
- [useS3Uploader](#gear-uses3uploader)
- [useS3MultipartUploader](#gear-uses3multipartuploader)
- [useS3MultipartUploader](#gear-uses3multipartuploader)
- [useS3MultipartUploader](#gear-uses3multipartuploader)
- [useShowOn](#gear-useshowon)
- [useStack](#gear-usestack)
- [createStack](#gear-createstack)
- [useTomSelect](#gear-usetomselect)
- [get](#gear-get)
- [create](#gear-create)
- [destroy](#gear-destroy)
- [addHook](#gear-addhook)
- [clearHooks](#gear-clearhooks)
- [useTinymce](#gear-usetinymce)
- [useTinymce](#gear-usetinymce)
- [useTinymce](#gear-usetinymce)
- [useTinymceHook](#gear-usetinymcehook)
- [useUIBootstrap5](#gear-useuibootstrap5)
- [useBs5Tooltip](#gear-usebs5tooltip)
- [useBs5KeepTab](#gear-usebs5keeptab)
- [useBs5ButtonRadio](#gear-usebs5buttonradio)
- [useWebDirective](#gear-usewebdirective)
- [useWebDirective](#gear-usewebdirective)
- [useWebDirective](#gear-usewebdirective)
- [useUniDirective](#gear-useunidirective)
- [useFormValidation](#gear-useformvalidation)
- [useFormValidation](#gear-useformvalidation)
- [useFormValidation](#gear-useformvalidation)
- [useFormValidationInstance](#gear-useformvalidationinstance)
- [useFieldValidationInstance](#gear-usefieldvalidationinstance)
- [addGlobalValidator](#gear-addglobalvalidator)
- [useAlertAdapter](#gear-usealertadapter)
- [useUI](#gear-useui)
- [useUITheme](#gear-useuitheme)
- [loadAlpine](#gear-loadalpine)
- [initAlpineComponent](#gear-initalpinecomponent)
- [prepareAlpine](#gear-preparealpine)
- [prepareAlpineDefer](#gear-preparealpinedefer)
- [renderMessage](#gear-rendermessage)
- [clearMessages](#gear-clearmessages)
- [mark](#gear-mark)
- [slideUp](#gear-slideup)
- [slideDown](#gear-slidedown)
- [slideToggle](#gear-slidetoggle)
- [fadeOut](#gear-fadeout)
- [fadeIn](#gear-fadein)
- [highlight](#gear-highlight)
- [useColorPicker](#gear-usecolorpicker)
- [useDisableOnSubmit](#gear-usedisableonsubmit)
- [useDisableIfStackNotEmpty](#gear-usedisableifstacknotempty)
- [useKeepAlive](#gear-usekeepalive)
- [useVueComponentField](#gear-usevuecomponentfield)
- [useSystemUri](#gear-usesystemuri)
- [useSystemUri](#gear-usesystemuri)
- [useSystemUri](#gear-usesystemuri)
- [useAssetUri](#gear-useasseturi)
- [useAssetUri](#gear-useasseturi)
- [useAssetUri](#gear-useasseturi)
- [addUriBase](#gear-adduribase)
- [addRoute](#gear-addroute)
- [route](#gear-route)
- [hasRoute](#gear-hasroute)
- [addQuery](#gear-addquery)
- [parseQuery](#gear-parsequery)
- [buildQuery](#gear-buildquery)
- [removeCloak](#gear-removecloak)
- [flattenChildren](#gear-flattenchildren)
- [data](#gear-data)
- [data](#gear-data)
- [data](#gear-data)
- [data](#gear-data)
- [data](#gear-data)
- [removeData](#gear-removedata)
- [removeData](#gear-removedata)
- [removeData](#gear-removedata)
- [formRequestSubmit](#gear-formrequestsubmit)
- [polyfill](#gear-polyfill)
- [useFieldMultiUploader](#gear-usefieldmultiuploader)
- [useUnicornPhpAdapter](#gear-useunicornphpadapter)
- [useLegacyMethods](#gear-uselegacymethods)
- [createUnicorn](#gear-createunicorn)
- [createUnicornWithPlugins](#gear-createunicornwithplugins)
- [useUnicorn](#gear-useunicorn)
- [useInject](#gear-useinject)
- [pushUnicornToGlobal](#gear-pushunicorntoglobal)
- [useMacro](#gear-usemacro)
- [useMacro](#gear-usemacro)
- [useMacro](#gear-usemacro)
- [useLegacy](#gear-uselegacy)

### :gear: isPlainObject

| Function | Type |
| ---------- | ---------- |
| `isPlainObject` | `(val: any) => val is Record<string, any>` |

### :gear: mergeDeep

| Function | Type |
| ---------- | ---------- |
| `mergeDeep` | `<T = Record<string, any>>(target: Partial<T>, ...sources: any[]) => T` |

### :gear: getData

| Function | Type |
| ---------- | ---------- |
| `getData` | `(element: Element, name?: string or undefined) => any` |

### :gear: setData

| Function | Type |
| ---------- | ---------- |
| `setData` | `(element: Element, name: string, value: any) => void` |

### :gear: defData

| Function | Type |
| ---------- | ---------- |
| `defData` | `(element: Element, name: string, defCallback: Function) => any` |

### :gear: removeData

| Function | Type |
| ---------- | ---------- |
| `removeData` | `(element: Element, name: string) => any` |

### :gear: prepareData

| Function | Type |
| ---------- | ---------- |
| `prepareData` | `<T extends Node>(element: T) => T` |

### :gear: domready

| Function | Type |
| ---------- | ---------- |
| `domready` | `(callback?: ((value: any) => any) or undefined) => Promise<void>` |

References:

* [https://stackoverflow.com/a/9899701](https://stackoverflow.com/a/9899701)


### :gear: selectOne

| Function | Type |
| ---------- | ---------- |
| `selectOne` | `{ <K extends keyof HTMLElementTagNameMap>(ele: K): HTMLElementTagNameMap[K] or null; <E extends Element = Element>(ele: string): E or null; <E extends Element = Element>(ele: E): E; <E extends Element = Element>(ele: string or E): E or null; }` |

### :gear: selectOne

| Function | Type |
| ---------- | ---------- |
| `selectOne` | `{ <K extends keyof HTMLElementTagNameMap>(ele: K): HTMLElementTagNameMap[K] or null; <E extends Element = Element>(ele: string): E or null; <E extends Element = Element>(ele: E): E; <E extends Element = Element>(ele: string or E): E or null; }` |

### :gear: selectOne

| Function | Type |
| ---------- | ---------- |
| `selectOne` | `{ <K extends keyof HTMLElementTagNameMap>(ele: K): HTMLElementTagNameMap[K] or null; <E extends Element = Element>(ele: string): E or null; <E extends Element = Element>(ele: E): E; <E extends Element = Element>(ele: string or E): E or null; }` |

### :gear: selectOne

| Function | Type |
| ---------- | ---------- |
| `selectOne` | `{ <K extends keyof HTMLElementTagNameMap>(ele: K): HTMLElementTagNameMap[K] or null; <E extends Element = Element>(ele: string): E or null; <E extends Element = Element>(ele: E): E; <E extends Element = Element>(ele: string or E): E or null; }` |

### :gear: selectOne

| Function | Type |
| ---------- | ---------- |
| `selectOne` | `{ <K extends keyof HTMLElementTagNameMap>(ele: K): HTMLElementTagNameMap[K] or null; <E extends Element = Element>(ele: string): E or null; <E extends Element = Element>(ele: E): E; <E extends Element = Element>(ele: string or E): E or null; }` |

### :gear: selectAll

| Function | Type |
| ---------- | ---------- |
| `selectAll` | `{ <E extends Element = Element>(ele: string, callback?: ((ele: E) => any) or undefined): E[]; <E extends Element = Element>(ele: NodeListOf<E> or E[], callback?: ((ele: E) => any) or undefined): E[]; <E extends Element = Element>(ele: string or ... 1 more ... or E[], callback?: ((ele: E) => any) or undefined): E[]; <E ext...` |

### :gear: selectAll

| Function | Type |
| ---------- | ---------- |
| `selectAll` | `{ <E extends Element = Element>(ele: string, callback?: ((ele: E) => any) or undefined): E[]; <E extends Element = Element>(ele: NodeListOf<E> or E[], callback?: ((ele: E) => any) or undefined): E[]; <E extends Element = Element>(ele: string or ... 1 more ... or E[], callback?: ((ele: E) => any) or undefined): E[]; <E ext...` |

### :gear: selectAll

| Function | Type |
| ---------- | ---------- |
| `selectAll` | `{ <E extends Element = Element>(ele: string, callback?: ((ele: E) => any) or undefined): E[]; <E extends Element = Element>(ele: NodeListOf<E> or E[], callback?: ((ele: E) => any) or undefined): E[]; <E extends Element = Element>(ele: string or ... 1 more ... or E[], callback?: ((ele: E) => any) or undefined): E[]; <E ext...` |

### :gear: selectAll

| Function | Type |
| ---------- | ---------- |
| `selectAll` | `{ <E extends Element = Element>(ele: string, callback?: ((ele: E) => any) or undefined): E[]; <E extends Element = Element>(ele: NodeListOf<E> or E[], callback?: ((ele: E) => any) or undefined): E[]; <E extends Element = Element>(ele: string or ... 1 more ... or E[], callback?: ((ele: E) => any) or undefined): E[]; <E ext...` |

### :gear: selectAll

| Function | Type |
| ---------- | ---------- |
| `selectAll` | `{ <E extends Element = Element>(ele: string, callback?: ((ele: E) => any) or undefined): E[]; <E extends Element = Element>(ele: NodeListOf<E> or E[], callback?: ((ele: E) => any) or undefined): E[]; <E extends Element = Element>(ele: string or ... 1 more ... or E[], callback?: ((ele: E) => any) or undefined): E[]; <E ext...` |

### :gear: getBoundedInstance

| Function | Type |
| ---------- | ---------- |
| `getBoundedInstance` | `{ <T = any, E = Element>(selector: E, name: string, callback?: ((el: E) => any) or undefined): T; <T = any, E extends Element = Element>(selector: string or E, name: string, callback?: ((el: E) => any) or undefined): T or null; }` |

### :gear: getBoundedInstance

| Function | Type |
| ---------- | ---------- |
| `getBoundedInstance` | `{ <T = any, E = Element>(selector: E, name: string, callback?: ((el: E) => any) or undefined): T; <T = any, E extends Element = Element>(selector: string or E, name: string, callback?: ((el: E) => any) or undefined): T or null; }` |

### :gear: getBoundedInstance

| Function | Type |
| ---------- | ---------- |
| `getBoundedInstance` | `{ <T = any, E = Element>(selector: E, name: string, callback?: ((el: E) => any) or undefined): T; <T = any, E extends Element = Element>(selector: string or E, name: string, callback?: ((el: E) => any) or undefined): T or null; }` |

### :gear: getBoundedInstanceList

| Function | Type |
| ---------- | ---------- |
| `getBoundedInstanceList` | `<T = any, E extends Element = Element>(selector: string or NodeListOf<E>, name: string, callback?: (el: E) => any) => (T or null)[]` |

### :gear: module

| Function | Type |
| ---------- | ---------- |
| `module` | `{ <T = any, E extends Element = Element>(ele: string, name: string, callback?: ((el: E) => any) or undefined): (T or null)[]; <T = any, E extends Element = Element>(ele: NodeListOf<E>, name: string, callback?: ((el: E) => any) or undefined): (T or null)[]; <T = any, E extends Element = Element>(ele: E, name: string, cal...` |

### :gear: module

| Function | Type |
| ---------- | ---------- |
| `module` | `{ <T = any, E extends Element = Element>(ele: string, name: string, callback?: ((el: E) => any) or undefined): (T or null)[]; <T = any, E extends Element = Element>(ele: NodeListOf<E>, name: string, callback?: ((el: E) => any) or undefined): (T or null)[]; <T = any, E extends Element = Element>(ele: E, name: string, cal...` |

### :gear: module

| Function | Type |
| ---------- | ---------- |
| `module` | `{ <T = any, E extends Element = Element>(ele: string, name: string, callback?: ((el: E) => any) or undefined): (T or null)[]; <T = any, E extends Element = Element>(ele: NodeListOf<E>, name: string, callback?: ((el: E) => any) or undefined): (T or null)[]; <T = any, E extends Element = Element>(ele: E, name: string, cal...` |

### :gear: module

| Function | Type |
| ---------- | ---------- |
| `module` | `{ <T = any, E extends Element = Element>(ele: string, name: string, callback?: ((el: E) => any) or undefined): (T or null)[]; <T = any, E extends Element = Element>(ele: NodeListOf<E>, name: string, callback?: ((el: E) => any) or undefined): (T or null)[]; <T = any, E extends Element = Element>(ele: E, name: string, cal...` |

### :gear: module

| Function | Type |
| ---------- | ---------- |
| `module` | `{ <T = any, E extends Element = Element>(ele: string, name: string, callback?: ((el: E) => any) or undefined): (T or null)[]; <T = any, E extends Element = Element>(ele: NodeListOf<E>, name: string, callback?: ((el: E) => any) or undefined): (T or null)[]; <T = any, E extends Element = Element>(ele: E, name: string, cal...` |

### :gear: h

| Function | Type |
| ---------- | ---------- |
| `h` | `<T extends keyof HTMLElementTagNameMap>(element: T, attrs?: Record<string, any> or undefined, content?: any) => HTMLElementTagNameMap[T]` |

### :gear: h

| Function | Type |
| ---------- | ---------- |
| `h` | `<T extends keyof HTMLElementTagNameMap>(element: T, attrs?: Record<string, any> or undefined, content?: any) => HTMLElementTagNameMap[T]` |

### :gear: html

| Function | Type |
| ---------- | ---------- |
| `html` | `<T extends Element = HTMLElement>(html: string) => T` |

### :gear: delegate

Pure JS version of jQuery delegate()

| Function | Type |
| ---------- | ---------- |
| `delegate` | `(wrapper: string or Element, selector: string, eventName: string, callback: (e: Event) => void) => () => void` |

References:

* [https://gist.github.com/iagobruno/4db2ed62dc40fa841bb9a5c7de92f5f8](https://gist.github.com/iagobruno/4db2ed62dc40fa841bb9a5c7de92f5f8)


### :gear: injectCssToDocument

| Function | Type |
| ---------- | ---------- |
| `injectCssToDocument` | `{ (doc: Document, ...css: (string or CSSStyleSheet)[]): CSSStyleSheet[]; (...css: (string or CSSStyleSheet)[]): CSSStyleSheet[]; }` |

### :gear: injectCssToDocument

| Function | Type |
| ---------- | ---------- |
| `injectCssToDocument` | `{ (doc: Document, ...css: (string or CSSStyleSheet)[]): CSSStyleSheet[]; (...css: (string or CSSStyleSheet)[]): CSSStyleSheet[]; }` |

### :gear: injectCssToDocument

| Function | Type |
| ---------- | ---------- |
| `injectCssToDocument` | `{ (doc: Document, ...css: (string or CSSStyleSheet)[]): CSSStyleSheet[]; (...css: (string or CSSStyleSheet)[]): CSSStyleSheet[]; }` |

### :gear: animateTo

| Function | Type |
| ---------- | ---------- |
| `animateTo` | `(element: HTMLElement, styles: Partial<Record<keyof CSSStyleDeclaration, any>>, options?: number or KeyframeAnimationOptions) => Animation` |

### :gear: base64UrlEncode

| Function | Type |
| ---------- | ---------- |
| `base64UrlEncode` | `(string: string) => string` |

### :gear: base64UrlDecode

Base64 URL decode

| Function | Type |
| ---------- | ---------- |
| `base64UrlDecode` | `(string: string) => string` |

### :gear: serial

| Function | Type |
| ---------- | ---------- |
| `serial` | `() => number` |

### :gear: watchAttributes

| Function | Type |
| ---------- | ---------- |
| `watchAttributes` | `<T extends HTMLElement>(el: T, callback?: AttributeMutationCallback<T> or undefined) => AttributeMutationObserver<T>` |

### :gear: forceArray

| Function | Type |
| ---------- | ---------- |
| `forceArray` | `<T>(item: T or T[]) => T[]` |

### :gear: debounce

| Function | Type |
| ---------- | ---------- |
| `debounce` | `<T extends Function = Function>(handler: T, wait?: number) => T` |

### :gear: throttle

| Function | Type |
| ---------- | ---------- |
| `throttle` | `<T extends Function = Function>(handler: T, wait?: number) => T` |

### :gear: isDebug

| Function | Type |
| ---------- | ---------- |
| `isDebug` | `() => boolean` |

### :gear: nextTick

| Function | Type |
| ---------- | ---------- |
| `nextTick` | `(callback?: (() => any) or undefined) => Promise<any>` |

### :gear: wait

| Function | Type |
| ---------- | ---------- |
| `wait` | `<T extends readonly unknown[]>(...promisee: { [K in keyof T]: T[K] or PromiseLike<T[K]>; }) => Promise<Awaited<T>>` |

### :gear: useLang

| Function | Type |
| ---------- | ---------- |
| `useLang` | `() => UnicornLang` |

### :gear: trans

| Function | Type |
| ---------- | ---------- |
| `trans` | `(id: string, ...args: any[]) => string` |

### :gear: __

| Function | Type |
| ---------- | ---------- |
| `__` | `(id: string, ...args: any[]) => string` |

### :gear: useScriptImport

| Function | Type |
| ---------- | ---------- |
| `useScriptImport` | `(src: string, attrs?: Record<string, string>) => Promise<void>` |

### :gear: doImport

| Function | Type |
| ---------- | ---------- |
| `doImport` | `<T = any>(src: string) => Promise<T>` |

### :gear: useImport

| Function | Type |
| ---------- | ---------- |
| `useImport` | `{ (...src: any[]): Promise<any>; <T extends any[]>(...src: string[]): Promise<T>; <T = any>(src: string): Promise<{ default: T; }>; <D = any, C = any>(src: string): Promise<{ default: D; } and Dictionary<...>>; }` |

### :gear: useImport

| Function | Type |
| ---------- | ---------- |
| `useImport` | `{ (...src: any[]): Promise<any>; <T extends any[]>(...src: string[]): Promise<T>; <T = any>(src: string): Promise<{ default: T; }>; <D = any, C = any>(src: string): Promise<{ default: D; } and Dictionary<...>>; }` |

### :gear: useImport

| Function | Type |
| ---------- | ---------- |
| `useImport` | `{ (...src: any[]): Promise<any>; <T extends any[]>(...src: string[]): Promise<T>; <T = any>(src: string): Promise<{ default: T; }>; <D = any, C = any>(src: string): Promise<{ default: D; } and Dictionary<...>>; }` |

### :gear: useImport

| Function | Type |
| ---------- | ---------- |
| `useImport` | `{ (...src: any[]): Promise<any>; <T extends any[]>(...src: string[]): Promise<T>; <T = any>(src: string): Promise<{ default: T; }>; <D = any, C = any>(src: string): Promise<{ default: D; } and Dictionary<...>>; }` |

### :gear: useImport

| Function | Type |
| ---------- | ---------- |
| `useImport` | `{ (...src: any[]): Promise<any>; <T extends any[]>(...src: string[]): Promise<T>; <T = any>(src: string): Promise<{ default: T; }>; <D = any, C = any>(src: string): Promise<{ default: D; } and Dictionary<...>>; }` |

### :gear: useSeriesImport

| Function | Type |
| ---------- | ---------- |
| `useSeriesImport` | `{ (...src: any[]): Promise<any>; <T extends any[]>(...src: string[]): Promise<T>; <T = any>(src: string): Promise<{ default: T; }>; <D = any, C = any>(src: string): Promise<{ default: D; } and Dictionary<...>>; }` |

### :gear: useSeriesImport

| Function | Type |
| ---------- | ---------- |
| `useSeriesImport` | `{ (...src: any[]): Promise<any>; <T extends any[]>(...src: string[]): Promise<T>; <T = any>(src: string): Promise<{ default: T; }>; <D = any, C = any>(src: string): Promise<{ default: D; } and Dictionary<...>>; }` |

### :gear: useSeriesImport

| Function | Type |
| ---------- | ---------- |
| `useSeriesImport` | `{ (...src: any[]): Promise<any>; <T extends any[]>(...src: string[]): Promise<T>; <T = any>(src: string): Promise<{ default: T; }>; <D = any, C = any>(src: string): Promise<{ default: D; } and Dictionary<...>>; }` |

### :gear: useSeriesImport

| Function | Type |
| ---------- | ---------- |
| `useSeriesImport` | `{ (...src: any[]): Promise<any>; <T extends any[]>(...src: string[]): Promise<T>; <T = any>(src: string): Promise<{ default: T; }>; <D = any, C = any>(src: string): Promise<{ default: D; } and Dictionary<...>>; }` |

### :gear: useSeriesImport

| Function | Type |
| ---------- | ---------- |
| `useSeriesImport` | `{ (...src: any[]): Promise<any>; <T extends any[]>(...src: string[]): Promise<T>; <T = any>(src: string): Promise<{ default: T; }>; <D = any, C = any>(src: string): Promise<{ default: D; } and Dictionary<...>>; }` |

### :gear: useCssIncludes

| Function | Type |
| ---------- | ---------- |
| `useCssIncludes` | `(...hrefs: string[]) => Promise<void[]>` |

### :gear: useCssImport

| Function | Type |
| ---------- | ---------- |
| `useCssImport` | `(...hrefs: string[]) => Promise<CSSStyleSheet[]>` |

### :gear: useCheckboxesMultiSelect

| Function | Type |
| ---------- | ---------- |
| `useCheckboxesMultiSelect` | `{ (): Promise<any>; (selector?: Nullable<string or HTMLElement>, options?: Record<string, any> or undefined): Promise<CheckboxesMultiSelect>; }` |

### :gear: useCheckboxesMultiSelect

| Function | Type |
| ---------- | ---------- |
| `useCheckboxesMultiSelect` | `{ (): Promise<any>; (selector?: Nullable<string or HTMLElement>, options?: Record<string, any> or undefined): Promise<CheckboxesMultiSelect>; }` |

### :gear: useCheckboxesMultiSelect

| Function | Type |
| ---------- | ---------- |
| `useCheckboxesMultiSelect` | `{ (): Promise<any>; (selector?: Nullable<string or HTMLElement>, options?: Record<string, any> or undefined): Promise<CheckboxesMultiSelect>; }` |

### :gear: useFieldCascadeSelect

| Function | Type |
| ---------- | ---------- |
| `useFieldCascadeSelect` | `() => Promise<CascadeSelectModule>` |

### :gear: useFieldFileDrag

| Function | Type |
| ---------- | ---------- |
| `useFieldFileDrag` | `() => Promise<FileDragModule>` |

### :gear: useFieldFlatpickr

| Function | Type |
| ---------- | ---------- |
| `useFieldFlatpickr` | `() => Promise<any>` |

### :gear: createCallback

| Function | Type |
| ---------- | ---------- |
| `createCallback` | `(type: "list" or "single", selector: string, modalSelector: string) => ModalSelectCallback` |

### :gear: useFieldModalSelect

| Function | Type |
| ---------- | ---------- |
| `useFieldModalSelect` | `() => Promise<ModalSelectModule>` |

### :gear: useFieldModalTree

| Function | Type |
| ---------- | ---------- |
| `useFieldModalTree` | `() => Promise<any>` |

### :gear: useFieldRepeatable

| Function | Type |
| ---------- | ---------- |
| `useFieldRepeatable` | `() => Promise<RepeatableModule>` |

### :gear: createHttpClient

| Function | Type |
| ---------- | ---------- |
| `createHttpClient` | `(config?: CreateAxiosDefaults<any> or AxiosInstance or undefined) => { axios: AxiosInstance; request: <T = any, D = any>(options: AxiosRequestConfig<any>) => Promise<...>; ... 11 more ...; isAxiosError: <T = any, D = any>(payload: any) => payload is AxiosError<...>; }` |

### :gear: useFieldSingleImageDrag

| Function | Type |
| ---------- | ---------- |
| `useFieldSingleImageDrag` | `() => Promise<SingleImageDragModule>` |

### :gear: useFormAsync

| Function | Type |
| ---------- | ---------- |
| `useFormAsync` | `{ (): Promise<UnicornFormElement>; (ele?: string or Element or undefined, options?: Record<string, any> or undefined): Promise<UnicornFormElement or null>; }` |

### :gear: useFormAsync

| Function | Type |
| ---------- | ---------- |
| `useFormAsync` | `{ (): Promise<UnicornFormElement>; (ele?: string or Element or undefined, options?: Record<string, any> or undefined): Promise<UnicornFormElement or null>; }` |

### :gear: useFormAsync

| Function | Type |
| ---------- | ---------- |
| `useFormAsync` | `{ (): Promise<UnicornFormElement>; (ele?: string or Element or undefined, options?: Record<string, any> or undefined): Promise<UnicornFormElement or null>; }` |

### :gear: useForm

| Function | Type |
| ---------- | ---------- |
| `useForm` | `{ (): UnicornFormElement; (ele?: string or Element or undefined, options?: Record<string, any> or undefined): UnicornFormElement or null; }` |

### :gear: useForm

| Function | Type |
| ---------- | ---------- |
| `useForm` | `{ (): UnicornFormElement; (ele?: string or Element or undefined, options?: Record<string, any> or undefined): UnicornFormElement or null; }` |

### :gear: useForm

| Function | Type |
| ---------- | ---------- |
| `useForm` | `{ (): UnicornFormElement; (ele?: string or Element or undefined, options?: Record<string, any> or undefined): UnicornFormElement or null; }` |

### :gear: useFormComponent

| Function | Type |
| ---------- | ---------- |
| `useFormComponent` | `(ele?: string or Element or undefined, options?: Record<string, any>) => Promise<UnicornFormElement or null>` |

### :gear: useGridAsync

| Function | Type |
| ---------- | ---------- |
| `useGridAsync` | `(ele?: string or HTMLElement or undefined, options?: Record<string, any> or undefined) => Promise<UnicornGridElement or null>` |

### :gear: useGrid

| Function | Type |
| ---------- | ---------- |
| `useGrid` | `(ele: string or HTMLElement, options?: Record<string, any> or undefined) => UnicornGridElement or null` |

### :gear: useGridComponent

| Function | Type |
| ---------- | ---------- |
| `useGridComponent` | `(ele: string or HTMLElement, options?: Record<string, any> or undefined) => Promise<UnicornGridElement or null>` |

### :gear: useHttpClient

| Function | Type |
| ---------- | ---------- |
| `useHttpClient` | `(config?: CreateAxiosDefaults<any> or AxiosInstance or undefined) => Promise<{ axios: AxiosInstance; request: <T = any, D = any>(options: AxiosRequestConfig<any>) => Promise<...>; ... 11 more ...; isAxiosError: <T = any, D = any>(payload: any) => payload is AxiosError<...>; }>` |

### :gear: useIframeModal

| Function | Type |
| ---------- | ---------- |
| `useIframeModal` | `() => Promise<IFrameModalModule>` |

### :gear: useListDependent

| Function | Type |
| ---------- | ---------- |
| `useListDependent` | `{ (): Promise<ListDependentModule>; (element: string or HTMLSelectElement, dependent?: Nullable<string or HTMLSelectElement>, options?: Partial<...> or undefined): Promise<...>; }` |

### :gear: useListDependent

| Function | Type |
| ---------- | ---------- |
| `useListDependent` | `{ (): Promise<ListDependentModule>; (element: string or HTMLSelectElement, dependent?: Nullable<string or HTMLSelectElement>, options?: Partial<...> or undefined): Promise<...>; }` |

### :gear: useListDependent

| Function | Type |
| ---------- | ---------- |
| `useListDependent` | `{ (): Promise<ListDependentModule>; (element: string or HTMLSelectElement, dependent?: Nullable<string or HTMLSelectElement>, options?: Partial<...> or undefined): Promise<...>; }` |

### :gear: useQueue

| Function | Type |
| ---------- | ---------- |
| `useQueue` | `(name?: string, maxRunning?: number) => TaskQueue` |

### :gear: createQueue

| Function | Type |
| ---------- | ---------- |
| `createQueue` | `(maxRunning?: number) => TaskQueue` |

### :gear: get

| Function | Type |
| ---------- | ---------- |
| `get` | `(name: string, options?: Partial<S3UploaderGlobalOptions> or undefined) => S3Uploader` |

### :gear: get

| Function | Type |
| ---------- | ---------- |
| `get` | `(name: string, options?: Partial<S3UploaderGlobalOptions> or undefined) => S3Uploader` |

### :gear: create

| Function | Type |
| ---------- | ---------- |
| `create` | `(name: string, options?: Partial<S3UploaderGlobalOptions>) => S3Uploader` |

### :gear: destroy

| Function | Type |
| ---------- | ---------- |
| `destroy` | `(name: string) => void` |

### :gear: useS3Uploader

| Function | Type |
| ---------- | ---------- |
| `useS3Uploader` | `{ (): Promise<S3UploaderModule>; (name: string, options?: Partial<S3UploaderGlobalOptions> or undefined): Promise<S3Uploader>; }` |

### :gear: useS3Uploader

| Function | Type |
| ---------- | ---------- |
| `useS3Uploader` | `{ (): Promise<S3UploaderModule>; (name: string, options?: Partial<S3UploaderGlobalOptions> or undefined): Promise<S3Uploader>; }` |

### :gear: useS3Uploader

| Function | Type |
| ---------- | ---------- |
| `useS3Uploader` | `{ (): Promise<S3UploaderModule>; (name: string, options?: Partial<S3UploaderGlobalOptions> or undefined): Promise<S3Uploader>; }` |

### :gear: useS3MultipartUploader

| Function | Type |
| ---------- | ---------- |
| `useS3MultipartUploader` | `{ (): Promise<S3MultipartUploaderModule>; (options: Partial<S3MultipartUploaderOptions>): Promise<S3MultipartUploader>; }` |

### :gear: useS3MultipartUploader

| Function | Type |
| ---------- | ---------- |
| `useS3MultipartUploader` | `{ (): Promise<S3MultipartUploaderModule>; (options: Partial<S3MultipartUploaderOptions>): Promise<S3MultipartUploader>; }` |

### :gear: useS3MultipartUploader

| Function | Type |
| ---------- | ---------- |
| `useS3MultipartUploader` | `{ (): Promise<S3MultipartUploaderModule>; (options: Partial<S3MultipartUploaderOptions>): Promise<S3MultipartUploader>; }` |

### :gear: useShowOn

| Function | Type |
| ---------- | ---------- |
| `useShowOn` | `() => Promise<ShowOnModule>` |

### :gear: useStack

| Function | Type |
| ---------- | ---------- |
| `useStack` | `<T = any>(name?: string, store?: any[]) => Stack<T>` |

### :gear: createStack

| Function | Type |
| ---------- | ---------- |
| `createStack` | `<T = any>(store?: any[]) => Stack<T>` |

### :gear: useTomSelect

| Function | Type |
| ---------- | ---------- |
| `useTomSelect` | `(selector?: Nullable<string or HTMLElement or NodeListOf<HTMLElement>>, options?: Record<string, any>, theme?: string) => Promise<...>` |

References:

* [https://tom-select.js.org/](https://tom-select.js.org/)


### :gear: get

| Function | Type |
| ---------- | ---------- |
| `get` | `(selector: string, options?: Record<string, any>) => Promise<TinymceController>` |

### :gear: create

| Function | Type |
| ---------- | ---------- |
| `create` | `(selector: string or HTMLElement, options?: Record<string, any>) => Promise<TinymceController>` |

### :gear: destroy

| Function | Type |
| ---------- | ---------- |
| `destroy` | `(selector: string) => void` |

### :gear: addHook

| Function | Type |
| ---------- | ---------- |
| `addHook` | `(handler: (tinymce: TinyMCE) => any) => void` |

### :gear: clearHooks

| Function | Type |
| ---------- | ---------- |
| `clearHooks` | `() => void` |

### :gear: useTinymce

| Function | Type |
| ---------- | ---------- |
| `useTinymce` | `{ (): Promise<TinymceModule>; (selector?: string or undefined, options?: Record<string, any> or undefined): Promise<TinymceController>; }` |

### :gear: useTinymce

| Function | Type |
| ---------- | ---------- |
| `useTinymce` | `{ (): Promise<TinymceModule>; (selector?: string or undefined, options?: Record<string, any> or undefined): Promise<TinymceController>; }` |

### :gear: useTinymce

| Function | Type |
| ---------- | ---------- |
| `useTinymce` | `{ (): Promise<TinymceModule>; (selector?: string or undefined, options?: Record<string, any> or undefined): Promise<TinymceController>; }` |

### :gear: useTinymceHook

| Function | Type |
| ---------- | ---------- |
| `useTinymceHook` | `(handler: (tinymce: TinyMCE) => any) => Promise<void>` |

### :gear: useUIBootstrap5

| Function | Type |
| ---------- | ---------- |
| `useUIBootstrap5` | `(install?: boolean, pushToGlobal?: boolean) => Promise<UIBootstrap5>` |

### :gear: useBs5Tooltip

| Function | Type |
| ---------- | ---------- |
| `useBs5Tooltip` | `(selector?: string or Element or NodeListOf<Element>, config?: Partial<Options>) => Promise<Tooltip[]>` |

### :gear: useBs5KeepTab

| Function | Type |
| ---------- | ---------- |
| `useBs5KeepTab` | `{ (): Promise<KeepTabModule>; (selector?: string or HTMLElement or undefined, options?: KeepTabOptions or undefined): Promise<...>; }` |

### :gear: useBs5ButtonRadio

| Function | Type |
| ---------- | ---------- |
| `useBs5ButtonRadio` | `{ (): Promise<ButtonRadioModule>; (selector?: string or HTMLElement or undefined, options?: ButtonRadioOptions or undefined): Promise<...>; }` |

### :gear: useWebDirective

| Function | Type |
| ---------- | ---------- |
| `useWebDirective` | `{ (name: string, options: false): Promise<void>; (name: string, options?: any): Promise<WebDirective>; }` |

### :gear: useWebDirective

| Function | Type |
| ---------- | ---------- |
| `useWebDirective` | `{ (name: string, options: false): Promise<void>; (name: string, options?: any): Promise<WebDirective>; }` |

### :gear: useWebDirective

| Function | Type |
| ---------- | ---------- |
| `useWebDirective` | `{ (name: string, options: false): Promise<void>; (name: string, options?: any): Promise<WebDirective>; }` |

### :gear: useUniDirective

| Function | Type |
| ---------- | ---------- |
| `useUniDirective` | `<T extends Element = HTMLElement, M extends Record<string, boolean> = Record<string, boolean>>(name: string, handler: WebDirectiveHandler<T, M>, wdInstance?: string or WebDirective) => Promise<...>` |

### :gear: useFormValidation

| Function | Type |
| ---------- | ---------- |
| `useFormValidation` | `{ (): Promise<ValidationModule>; (selector: string or Element): Promise<UnicornFormValidation or null>; }` |

### :gear: useFormValidation

| Function | Type |
| ---------- | ---------- |
| `useFormValidation` | `{ (): Promise<ValidationModule>; (selector: string or Element): Promise<UnicornFormValidation or null>; }` |

### :gear: useFormValidation

| Function | Type |
| ---------- | ---------- |
| `useFormValidation` | `{ (): Promise<ValidationModule>; (selector: string or Element): Promise<UnicornFormValidation or null>; }` |

### :gear: useFormValidationInstance

| Function | Type |
| ---------- | ---------- |
| `useFormValidationInstance` | `(selector: string or Element) => UnicornFormValidation or null` |

### :gear: useFieldValidationInstance

| Function | Type |
| ---------- | ---------- |
| `useFieldValidationInstance` | `(selector: string or Element) => UnicornFieldValidation or null` |

### :gear: addGlobalValidator

| Function | Type |
| ---------- | ---------- |
| `addGlobalValidator` | `<T extends unknown, E extends HTMLElement, P = Record<string, any>>(name: string, validator: ValidationHandler<T, E, P>, options?: ValidatorOptions<E, P>) => Promise<...>` |

### :gear: useAlertAdapter

| Function | Type |
| ---------- | ---------- |
| `useAlertAdapter` | `(config?: AlertAdapterConfig or undefined) => any` |

### :gear: useUI

| Function | Type |
| ---------- | ---------- |
| `useUI` | `(instance?: UnicornUI or undefined) => UnicornUI` |

### :gear: useUITheme

| Function | Type |
| ---------- | ---------- |
| `useUITheme` | `<T extends UIThemeInterface>(theme?: T or Constructor<T> or undefined) => UIThemeInterface` |

### :gear: loadAlpine

| Function | Type |
| ---------- | ---------- |
| `loadAlpine` | `(callback?: Nullable<AlpinePrepareCallback>) => Promise<Alpine>` |

### :gear: initAlpineComponent

| Function | Type |
| ---------- | ---------- |
| `initAlpineComponent` | `(directive: string) => Promise<void>` |

### :gear: prepareAlpine

Before Alpine init

| Function | Type |
| ---------- | ---------- |
| `prepareAlpine` | `(callback: AlpinePrepareCallback) => Promise<void>` |

### :gear: prepareAlpineDefer

| Function | Type |
| ---------- | ---------- |
| `prepareAlpineDefer` | `(callback: AlpinePrepareCallback) => Promise<void>` |

### :gear: renderMessage

Render Messages.

| Function | Type |
| ---------- | ---------- |
| `renderMessage` | `(messages: string or string[], type?: string) => (() => any) or undefined` |

### :gear: clearMessages

Clear messages.

| Function | Type |
| ---------- | ---------- |
| `clearMessages` | `() => void` |

### :gear: mark

| Function | Type |
| ---------- | ---------- |
| `mark` | `(selector?: string or HTMLElement or undefined, keyword?: string, options?: Record<string, any>) => Promise<any>` |

### :gear: slideUp

| Function | Type |
| ---------- | ---------- |
| `slideUp` | `(target: string or HTMLElement, duration?: number) => Promise<void or Animation>` |

### :gear: slideDown

| Function | Type |
| ---------- | ---------- |
| `slideDown` | `(target: string or HTMLElement, duration?: number, display?: string) => Promise<void or Animation>` |

### :gear: slideToggle

slideToggle

| Function | Type |
| ---------- | ---------- |
| `slideToggle` | `(target: string or HTMLElement, duration?: number, display?: string) => Promise<void or Animation>` |

### :gear: fadeOut

| Function | Type |
| ---------- | ---------- |
| `fadeOut` | `(selector: string or HTMLElement, duration?: number) => Promise<void or Animation>` |

### :gear: fadeIn

| Function | Type |
| ---------- | ---------- |
| `fadeIn` | `(selector: string or HTMLElement, duration?: number, display?: string) => Promise<void or Animation>` |

### :gear: highlight

| Function | Type |
| ---------- | ---------- |
| `highlight` | `(selector: string or HTMLElement, color?: string, duration?: number) => Promise<void or Animation>` |

### :gear: useColorPicker

Color Picker.

| Function | Type |
| ---------- | ---------- |
| `useColorPicker` | `(selector?: Nullable<string or HTMLElement or NodeListOf<HTMLElement>>, options?: Partial<SpectrumOptions>) => Promise<...>` |

### :gear: useDisableOnSubmit

| Function | Type |
| ---------- | ---------- |
| `useDisableOnSubmit` | `(formSelector?: string or HTMLFormElement, buttonSelector?: string, options?: Record<string, any>) => void` |

### :gear: useDisableIfStackNotEmpty

| Function | Type |
| ---------- | ---------- |
| `useDisableIfStackNotEmpty` | `(buttonSelector?: string, stackName?: string) => void` |

### :gear: useKeepAlive

Keep alive.

| Function | Type |
| ---------- | ---------- |
| `useKeepAlive` | `(url: string, time?: number) => () => void` |

### :gear: useVueComponentField

Vue component field.

| Function | Type |
| ---------- | ---------- |
| `useVueComponentField` | `(selector?: Nullable<string or HTMLElement>, value?: any, options?: Record<string, any>) => Promise<any>` |

### :gear: useSystemUri

| Function | Type |
| ---------- | ---------- |
| `useSystemUri` | `{ (): UnicornSystemUri; (type: UriTypes): string; }` |

### :gear: useSystemUri

| Function | Type |
| ---------- | ---------- |
| `useSystemUri` | `{ (): UnicornSystemUri; (type: UriTypes): string; }` |

### :gear: useSystemUri

| Function | Type |
| ---------- | ---------- |
| `useSystemUri` | `{ (): UnicornSystemUri; (type: UriTypes): string; }` |

### :gear: useAssetUri

| Function | Type |
| ---------- | ---------- |
| `useAssetUri` | `{ (): UnicornAssetUri; (type?: AssetTypes or undefined, path?: string or undefined): string; }` |

### :gear: useAssetUri

| Function | Type |
| ---------- | ---------- |
| `useAssetUri` | `{ (): UnicornAssetUri; (type?: AssetTypes or undefined, path?: string or undefined): string; }` |

### :gear: useAssetUri

| Function | Type |
| ---------- | ---------- |
| `useAssetUri` | `{ (): UnicornAssetUri; (type?: AssetTypes or undefined, path?: string or undefined): string; }` |

### :gear: addUriBase

| Function | Type |
| ---------- | ---------- |
| `addUriBase` | `(uri: string, type?: string) => string` |

### :gear: addRoute

Add a route.

| Function | Type |
| ---------- | ---------- |
| `addRoute` | `(route: string, url: string) => void` |

### :gear: route

Get route.

| Function | Type |
| ---------- | ---------- |
| `route` | `(route: string, query?: Record<string, any> or undefined) => string` |

### :gear: hasRoute

| Function | Type |
| ---------- | ---------- |
| `hasRoute` | `(route: string) => boolean` |

### :gear: addQuery

| Function | Type |
| ---------- | ---------- |
| `addQuery` | `(url: string, query?: Record<string, any> or undefined) => string` |

### :gear: parseQuery

| Function | Type |
| ---------- | ---------- |
| `parseQuery` | `<T = Record<string, any>>(queryString: string) => T` |

### :gear: buildQuery

| Function | Type |
| ---------- | ---------- |
| `buildQuery` | `(query: Record<string, any>) => string` |

### :gear: removeCloak

| Function | Type |
| ---------- | ---------- |
| `removeCloak` | `() => void` |

### :gear: flattenChildren

| Function | Type |
| ---------- | ---------- |
| `flattenChildren` | `(children: TreeNode[]) => TreeNode[]` |

### :gear: data

| Function | Type |
| ---------- | ---------- |
| `data` | `{ (name: string, data?: any): any; <T = void, R = [T] extends [void] ? any : T or undefined>(name: string): R; <T = void, R = [T] extends [void] ? any : T or undefined>(ele: Element, name: string): R; (ele: Element, name: string, value: any): any; }` |

### :gear: data

| Function | Type |
| ---------- | ---------- |
| `data` | `{ (name: string, data?: any): any; <T = void, R = [T] extends [void] ? any : T or undefined>(name: string): R; <T = void, R = [T] extends [void] ? any : T or undefined>(ele: Element, name: string): R; (ele: Element, name: string, value: any): any; }` |

### :gear: data

| Function | Type |
| ---------- | ---------- |
| `data` | `{ (name: string, data?: any): any; <T = void, R = [T] extends [void] ? any : T or undefined>(name: string): R; <T = void, R = [T] extends [void] ? any : T or undefined>(ele: Element, name: string): R; (ele: Element, name: string, value: any): any; }` |

### :gear: data

| Function | Type |
| ---------- | ---------- |
| `data` | `{ (name: string, data?: any): any; <T = void, R = [T] extends [void] ? any : T or undefined>(name: string): R; <T = void, R = [T] extends [void] ? any : T or undefined>(ele: Element, name: string): R; (ele: Element, name: string, value: any): any; }` |

### :gear: data

| Function | Type |
| ---------- | ---------- |
| `data` | `{ (name: string, data?: any): any; <T = void, R = [T] extends [void] ? any : T or undefined>(name: string): R; <T = void, R = [T] extends [void] ? any : T or undefined>(ele: Element, name: string): R; (ele: Element, name: string, value: any): any; }` |

### :gear: removeData

| Function | Type |
| ---------- | ---------- |
| `removeData` | `{ (name: string): any; (ele: Element, name: string): any; }` |

### :gear: removeData

| Function | Type |
| ---------- | ---------- |
| `removeData` | `{ (name: string): any; (ele: Element, name: string): any; }` |

### :gear: removeData

| Function | Type |
| ---------- | ---------- |
| `removeData` | `{ (name: string): any; (ele: Element, name: string): any; }` |

### :gear: formRequestSubmit

| Function | Type |
| ---------- | ---------- |
| `formRequestSubmit` | `(prototype: any) => void` |

### :gear: polyfill

| Function | Type |
| ---------- | ---------- |
| `polyfill` | `() => void` |

### :gear: useFieldMultiUploader

| Function | Type |
| ---------- | ---------- |
| `useFieldMultiUploader` | `() => Promise<MultiUploaderModule>` |

### :gear: useUnicornPhpAdapter

| Function | Type |
| ---------- | ---------- |
| `useUnicornPhpAdapter` | `(app?: UnicornApp or undefined) => { repeatable: () => Promise<RepeatableModule>; flatpickr: () => Promise<any>; fileDrag: () => Promise<FileDragModule>; ... 10 more ...; bootstrap: { ...; }; }` |

### :gear: useLegacyMethods

| Function | Type |
| ---------- | ---------- |
| `useLegacyMethods` | `(app: any) => Promise<void>` |

### :gear: createUnicorn

| Function | Type |
| ---------- | ---------- |
| `createUnicorn` | `() => UnicornApp` |

### :gear: createUnicornWithPlugins

| Function | Type |
| ---------- | ---------- |
| `createUnicornWithPlugins` | `() => UnicornApp` |

### :gear: useUnicorn

| Function | Type |
| ---------- | ---------- |
| `useUnicorn` | `(instance?: UnicornApp or undefined) => UnicornApp` |

### :gear: useInject

| Function | Type |
| ---------- | ---------- |
| `useInject` | `{ <T>(id: InjectionKey<T>): T; <T>(id: InjectionKey<T>, def: T): T; <T>(id: InjectionKey<T>, def?: T or undefined): T; }` |

### :gear: pushUnicornToGlobal

| Function | Type |
| ---------- | ---------- |
| `pushUnicornToGlobal` | `(app?: UnicornApp or undefined) => void` |

### :gear: useMacro

| Function | Type |
| ---------- | ---------- |
| `useMacro` | `{ <T extends Dictionary>(name: T): T; <N extends string, T extends unknown>(name: N, prop: T): { [K in N]: T; }; }` |

### :gear: useMacro

| Function | Type |
| ---------- | ---------- |
| `useMacro` | `{ <T extends Dictionary>(name: T): T; <N extends string, T extends unknown>(name: N, prop: T): { [K in N]: T; }; }` |

### :gear: useMacro

| Function | Type |
| ---------- | ---------- |
| `useMacro` | `{ <T extends Dictionary>(name: T): T; <N extends string, T extends unknown>(name: N, prop: T): { [K in N]: T; }; }` |

### :gear: useLegacy

| Function | Type |
| ---------- | ---------- |
| `useLegacy` | `(app?: UnicornApp or undefined) => Promise<UnicornApp>` |


## :wrench: Constants

- [ready](#gear-ready)
- [ready](#gear-ready)
- [ready](#gear-ready)
- [ready](#gear-ready)
- [ready](#gear-ready)
- [ready](#gear-ready)
- [ready](#gear-ready)
- [ready](#gear-ready)
- [ready](#gear-ready)
- [ready](#gear-ready)
- [ready](#gear-ready)
- [ready](#gear-ready)
- [ready](#gear-ready)
- [ready](#gear-ready)

### :gear: ready

| Constant | Type |
| ---------- | ---------- |
| `ready` | `Promise<void>` |

### :gear: ready

| Constant | Type |
| ---------- | ---------- |
| `ready` | `Promise<void>` |

### :gear: ready

| Constant | Type |
| ---------- | ---------- |
| `ready` | `Promise<void>` |

### :gear: ready

| Constant | Type |
| ---------- | ---------- |
| `ready` | `Promise<void>` |

### :gear: ready

| Constant | Type |
| ---------- | ---------- |
| `ready` | `Promise<void>` |

### :gear: ready

| Constant | Type |
| ---------- | ---------- |
| `ready` | `Promise<void>` |

### :gear: ready

| Constant | Type |
| ---------- | ---------- |
| `ready` | `Promise<void>` |

### :gear: ready

| Constant | Type |
| ---------- | ---------- |
| `ready` | `Promise<void>` |

### :gear: ready

| Constant | Type |
| ---------- | ---------- |
| `ready` | `Promise<void>` |

### :gear: ready

| Constant | Type |
| ---------- | ---------- |
| `ready` | `Promise<void>` |

### :gear: ready

| Constant | Type |
| ---------- | ---------- |
| `ready` | `Promise<void>` |

### :gear: ready

| Constant | Type |
| ---------- | ---------- |
| `ready` | `Promise<void>` |

### :gear: ready

| Constant | Type |
| ---------- | ---------- |
| `ready` | `Promise<[void, void]>` |

### :gear: ready

| Constant | Type |
| ---------- | ---------- |
| `ready` | `Promise<void>` |


## :factory: AttributeMutationObserver

### Methods

- [watch](#gear-watch)
- [observe](#gear-observe)
- [disconnect](#gear-disconnect)

#### :gear: watch

| Method | Type |
| ---------- | ---------- |
| `watch` | `(name: string, callback: AttributeWatcher<T>) => () => void` |

#### :gear: observe

| Method | Type |
| ---------- | ---------- |
| `observe` | `() => void` |

#### :gear: disconnect

| Method | Type |
| ---------- | ---------- |
| `disconnect` | `() => void` |

### Properties

- [observer](#gear-observer)
- [watches](#gear-watches)

#### :gear: observer

| Property | Type |
| ---------- | ---------- |
| `observer` | `MutationObserver` |

#### :gear: watches

| Property | Type |
| ---------- | ---------- |
| `watches` | `Record<string, AttributeWatcher<T>[]>` |

## :factory: default

### Methods

- [trans](#gear-trans)
- [get](#gear-get)
- [has](#gear-has)
- [add](#gear-add)
- [getStrings](#gear-getstrings)

#### :gear: trans

Translate a string.

| Method | Type |
| ---------- | ---------- |
| `trans` | `(id: string, ...args: any[]) => string` |

#### :gear: get

Find text.

| Method | Type |
| ---------- | ---------- |
| `get` | `(id: string) => string or null` |

#### :gear: has

Has language key.

| Method | Type |
| ---------- | ---------- |
| `has` | `(key: string) => boolean` |

#### :gear: add

Add language key.

| Method | Type |
| ---------- | ---------- |
| `add` | `(key: string, value: string) => this` |

#### :gear: getStrings

| Method | Type |
| ---------- | ---------- |
| `getStrings` | `() => Record<string, string>` |

## :factory: CheckboxesMultiSelect

### Static Methods

- [handle](#gear-handle)

#### :gear: handle

| Method | Type |
| ---------- | ---------- |
| `handle` | `(selector: any, options?: any) => any[]` |

### Methods

- [select](#gear-select)

#### :gear: select

| Method | Type |
| ---------- | ---------- |
| `select` | `(box: HTMLInputElement, event: MouseEvent) => void` |

### Properties

- [defaultOptions](#gear-defaultoptions)
- [$element](#gear-$element)
- [options](#gear-options)
- [boxes](#gear-boxes)
- [last](#gear-last)

#### :gear: defaultOptions

| Property | Type |
| ---------- | ---------- |
| `defaultOptions` | `{ duration: number; inputSelector: string; }` |

#### :gear: $element

| Property | Type |
| ---------- | ---------- |
| `$element` | `HTMLElement` |

#### :gear: options

| Property | Type |
| ---------- | ---------- |
| `options` | `any` |

#### :gear: boxes

| Property | Type |
| ---------- | ---------- |
| `boxes` | `HTMLInputElement[]` |

#### :gear: last

| Property | Type |
| ---------- | ---------- |
| `last` | `false or HTMLInputElement` |

## :factory: FileDragElement

### Methods

- [connectedCallback](#gear-connectedcallback)
- [bindEvent](#gear-bindevent)
- [prepareElements](#gear-prepareelements)
- [createElementsLayout](#gear-createelementslayout)
- [onChange](#gear-onchange)
- [checkFileType](#gear-checkfiletype)
- [compareMimeType](#gear-comparemimetype)

#### :gear: connectedCallback

| Method | Type |
| ---------- | ---------- |
| `connectedCallback` | `() => void` |

#### :gear: bindEvent

| Method | Type |
| ---------- | ---------- |
| `bindEvent` | `() => void` |

#### :gear: prepareElements

| Method | Type |
| ---------- | ---------- |
| `prepareElements` | `() => void` |

#### :gear: createElementsLayout

| Method | Type |
| ---------- | ---------- |
| `createElementsLayout` | `() => void` |

#### :gear: onChange

| Method | Type |
| ---------- | ---------- |
| `onChange` | `(evt?: Event or undefined) => void` |

#### :gear: checkFileType

| Method | Type |
| ---------- | ---------- |
| `checkFileType` | `(accepted: string[], file: File) => void` |

#### :gear: compareMimeType

| Method | Type |
| ---------- | ---------- |
| `compareMimeType` | `(accepted: string, mime: string) => boolean` |

### Static Properties

- [is](#gear-is)

#### :gear: is

| Property | Type |
| ---------- | ---------- |
| `is` | `string` |

### Properties

- [element](#gear-element)
- [overlayLabel](#gear-overlaylabel)
- [button](#gear-button)
- [options](#gear-options)

#### :gear: element

| Property | Type |
| ---------- | ---------- |
| `element` | `HTMLInputElement` |

#### :gear: overlayLabel

| Property | Type |
| ---------- | ---------- |
| `overlayLabel` | `HTMLLabelElement` |

#### :gear: button

| Property | Type |
| ---------- | ---------- |
| `button` | `HTMLButtonElement` |

#### :gear: options

| Property | Type |
| ---------- | ---------- |
| `options` | `FileDragOptions` |

## :factory: FlatpickrElement

### Methods

- [getOptions](#gear-getoptions)
- [getInstance](#gear-getinstance)

#### :gear: getOptions

| Method | Type |
| ---------- | ---------- |
| `getOptions` | `() => any` |

#### :gear: getInstance

| Method | Type |
| ---------- | ---------- |
| `getInstance` | `() => Instance` |

### Properties

- [instance](#gear-instance)

#### :gear: instance

| Property | Type |
| ---------- | ---------- |
| `instance` | `Instance` |

## :factory: IFrameModalElement

### Methods

- [template](#gear-template)
- [connectedCallback](#gear-connectedcallback)
- [bindEvents](#gear-bindevents)
- [resize](#gear-resize)
- [getModalId](#gear-getmodalid)

#### :gear: template

| Method | Type |
| ---------- | ---------- |
| `template` | `() => string` |

#### :gear: connectedCallback

| Method | Type |
| ---------- | ---------- |
| `connectedCallback` | `() => void` |

#### :gear: bindEvents

| Method | Type |
| ---------- | ---------- |
| `bindEvents` | `() => void` |

#### :gear: resize

| Method | Type |
| ---------- | ---------- |
| `resize` | `(iframe: HTMLIFrameElement) => void` |

#### :gear: getModalId

| Method | Type |
| ---------- | ---------- |
| `getModalId` | `() => string` |

### Static Properties

- [is](#gear-is)

#### :gear: is

| Property | Type |
| ---------- | ---------- |
| `is` | `string` |

### Properties

- [options](#gear-options)
- [modalElement](#gear-modalelement)
- [modal](#gear-modal)
- [iframe](#gear-iframe)

#### :gear: options

| Property | Type |
| ---------- | ---------- |
| `options` | `IFrameModalOptions` |

#### :gear: modalElement

| Property | Type |
| ---------- | ---------- |
| `modalElement` | `HTMLDivElement` |

#### :gear: modal

| Property | Type |
| ---------- | ---------- |
| `modal` | `Modal` |

#### :gear: iframe

| Property | Type |
| ---------- | ---------- |
| `iframe` | `HTMLIFrameElement` |

## :factory: SingleImageDragElement

### Methods

- [connectedCallback](#gear-connectedcallback)
- [bindEvents](#gear-bindevents)
- [getInputAccept](#gear-getinputaccept)
- [handleFileSelect](#gear-handlefileselect)
- [checkFile](#gear-checkfile)
- [compareMimeType](#gear-comparemimetype)
- [checkSize](#gear-checksize)
- [alert](#gear-alert)
- [storeValue](#gear-storevalue)

#### :gear: connectedCallback

| Method | Type |
| ---------- | ---------- |
| `connectedCallback` | `() => void` |

#### :gear: bindEvents

| Method | Type |
| ---------- | ---------- |
| `bindEvents` | `() => void` |

#### :gear: getInputAccept

| Method | Type |
| ---------- | ---------- |
| `getInputAccept` | `() => string` |

#### :gear: handleFileSelect

| Method | Type |
| ---------- | ---------- |
| `handleFileSelect` | `(file: File) => void` |

#### :gear: checkFile

| Method | Type |
| ---------- | ---------- |
| `checkFile` | `(file: File) => boolean` |

#### :gear: compareMimeType

| Method | Type |
| ---------- | ---------- |
| `compareMimeType` | `(accept: string, mime: string) => boolean` |

#### :gear: checkSize

| Method | Type |
| ---------- | ---------- |
| `checkSize` | `(image: HTMLImageElement) => boolean` |

#### :gear: alert

| Method | Type |
| ---------- | ---------- |
| `alert` | `(title: string, text?: string, type?: string) => any` |

#### :gear: storeValue

| Method | Type |
| ---------- | ---------- |
| `storeValue` | `(url: string, preview: string) => void` |

### Static Properties

- [is](#gear-is)

#### :gear: is

| Property | Type |
| ---------- | ---------- |
| `is` | `string` |

### Properties

- [currentImage](#gear-currentimage)
- [currentFile](#gear-currentfile)
- [lastZoom](#gear-lastzoom)
- [valueBackup](#gear-valuebackup)

#### :gear: currentImage

| Property | Type |
| ---------- | ---------- |
| `currentImage` | `string` |

#### :gear: currentFile

| Property | Type |
| ---------- | ---------- |
| `currentFile` | `File or undefined` |

#### :gear: lastZoom

| Property | Type |
| ---------- | ---------- |
| `lastZoom` | `number` |

#### :gear: valueBackup

| Property | Type |
| ---------- | ---------- |
| `valueBackup` | `string` |

## :factory: UnicornFormElement

### Static Methods

- [flattenObject](#gear-flattenobject)
- [buildFieldName](#gear-buildfieldname)

#### :gear: flattenObject

| Method | Type |
| ---------- | ---------- |
| `flattenObject` | `(ob: Record<string, any>) => Record<string, any>` |

References:

* [https://stackoverflow.com/a/53739792](https://stackoverflow.com/a/53739792)


#### :gear: buildFieldName

| Method | Type |
| ---------- | ---------- |
| `buildFieldName` | `(field: string) => string` |

### Methods

- [initComponent](#gear-initcomponent)
- [useState](#gear-usestate)
- [getElement](#gear-getelement)
- [submit](#gear-submit)
- [injectInput](#gear-injectinput)
- [get](#gear-get)
- [post](#gear-post)
- [put](#gear-put)
- [patch](#gear-patch)
- [delete](#gear-delete)

#### :gear: initComponent

| Method | Type |
| ---------- | ---------- |
| `initComponent` | `(store?: string, custom?: {}) => Promise<Alpine>` |

#### :gear: useState

| Method | Type |
| ---------- | ---------- |
| `useState` | `(custom?: {}) => Record<string, any>` |

#### :gear: getElement

| Method | Type |
| ---------- | ---------- |
| `getElement` | `() => HTMLFormElement or undefined` |

#### :gear: submit

| Method | Type |
| ---------- | ---------- |
| `submit` | `(url?: Nullable<string>, data?: Nullable<Record<string, any>>, method?: Nullable<string>, customMethod?: Nullable<string>) => boolean` |

#### :gear: injectInput

| Method | Type |
| ---------- | ---------- |
| `injectInput` | `(name: string, value: any) => HTMLInputElement` |

#### :gear: get

Make a GET request.

| Method | Type |
| ---------- | ---------- |
| `get` | `(url?: Nullable<string>, data?: Nullable<Record<string, any>>, customMethod?: Nullable<string>) => boolean` |

#### :gear: post

Post form.

| Method | Type |
| ---------- | ---------- |
| `post` | `(url?: Nullable<string>, data?: Nullable<Record<string, any>>, customMethod?: Nullable<string>) => boolean` |

#### :gear: put

Make a PUT request.

| Method | Type |
| ---------- | ---------- |
| `put` | `(url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: patch

Make a PATCH request.

| Method | Type |
| ---------- | ---------- |
| `patch` | `(url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: delete

Make a DELETE request.

| Method | Type |
| ---------- | ---------- |
| `delete` | `(url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

### Properties

- [element](#gear-element)
- [options](#gear-options)

#### :gear: element

| Property | Type |
| ---------- | ---------- |
| `element` | `HTMLFormElement or undefined` |

#### :gear: options

| Property | Type |
| ---------- | ---------- |
| `options` | `Record<string, any>` |

## :factory: UnicornGridElement

### Methods

- [bindEvents](#gear-bindevents)
- [initComponent](#gear-initcomponent)
- [useState](#gear-usestate)
- [getElement](#gear-getelement)
- [sendFilter](#gear-sendfilter)
- [clearFilters](#gear-clearfilters)
- [sort](#gear-sort)
- [sortBy](#gear-sortby)
- [isSortActive](#gear-issortactive)
- [getDirection](#gear-getdirection)
- [orderingEquals](#gear-orderingequals)
- [checkRow](#gear-checkrow)
- [getCheckboxByRow](#gear-getcheckboxbyrow)
- [updateRow](#gear-updaterow)
- [updateItem](#gear-updateitem)
- [updateItemByTask](#gear-updateitembytask)
- [doTask](#gear-dotask)
- [updateRowByTask](#gear-updaterowbytask)
- [updateListByTask](#gear-updatelistbytask)
- [copyItem](#gear-copyitem)
- [copyRow](#gear-copyrow)
- [deleteList](#gear-deletelist)
- [toggleAll](#gear-toggleall)
- [disableAllCheckboxes](#gear-disableallcheckboxes)
- [countChecked](#gear-countchecked)
- [getChecked](#gear-getchecked)
- [getCheckedValues](#gear-getcheckedvalues)
- [validateChecked](#gear-validatechecked)
- [hasChecked](#gear-haschecked)
- [reorderAll](#gear-reorderall)
- [moveItem](#gear-moveitem)
- [moveUp](#gear-moveup)
- [moveDown](#gear-movedown)
- [getId](#gear-getid)

#### :gear: bindEvents

| Method | Type |
| ---------- | ---------- |
| `bindEvents` | `() => void` |

#### :gear: initComponent

| Method | Type |
| ---------- | ---------- |
| `initComponent` | `(store?: string, custom?: Record<string, string>) => Promise<Alpine>` |

#### :gear: useState

| Method | Type |
| ---------- | ---------- |
| `useState` | `(this: any, custom?: Record<string, any>) => Partial<Record<string, any>> and Record<string, any>` |

#### :gear: getElement

| Method | Type |
| ---------- | ---------- |
| `getElement` | `() => HTMLElement` |

#### :gear: sendFilter

| Method | Type |
| ---------- | ---------- |
| `sendFilter` | `($event?: Event or undefined, method?: string or undefined) => void` |

#### :gear: clearFilters

| Method | Type |
| ---------- | ---------- |
| `clearFilters` | `(element: HTMLElement, method?: Nullable<string>) => void` |

#### :gear: sort

| Method | Type |
| ---------- | ---------- |
| `sort` | `($el: HTMLElement) => boolean` |

#### :gear: sortBy

Sort two items.

| Method | Type |
| ---------- | ---------- |
| `sortBy` | `(ordering: Nullable<string>) => boolean` |

#### :gear: isSortActive

| Method | Type |
| ---------- | ---------- |
| `isSortActive` | `($el: HTMLElement) => boolean` |

#### :gear: getDirection

| Method | Type |
| ---------- | ---------- |
| `getDirection` | `($el: HTMLElement) => "ASC" or "DESC" or null` |

#### :gear: orderingEquals

| Method | Type |
| ---------- | ---------- |
| `orderingEquals` | `(a: Nullable<string>, b: Nullable<string>) => boolean` |

#### :gear: checkRow

Check a row's checkbox.

| Method | Type |
| ---------- | ---------- |
| `checkRow` | `(row: number, value?: boolean) => void` |

#### :gear: getCheckboxByRow

| Method | Type |
| ---------- | ---------- |
| `getCheckboxByRow` | `(row: number) => Nullable<HTMLInputElement>` |

#### :gear: updateRow

Update a row.

| Method | Type |
| ---------- | ---------- |
| `updateRow` | `(row: number, url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: updateItem

Update an item by id.

| Method | Type |
| ---------- | ---------- |
| `updateItem` | `(id: string or number, url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: updateItemByTask

Update a item with batch task.

| Method | Type |
| ---------- | ---------- |
| `updateItemByTask` | `(task: string, id: string or number, url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: doTask

| Method | Type |
| ---------- | ---------- |
| `doTask` | `(task: string, id: string or number, url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: updateRowByTask

Update a row with batch task.

| Method | Type |
| ---------- | ---------- |
| `updateRowByTask` | `(task: string, row: number, url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: updateListByTask

Batch update items.

| Method | Type |
| ---------- | ---------- |
| `updateListByTask` | `(task: string, url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: copyItem

Copy a row.

| Method | Type |
| ---------- | ---------- |
| `copyItem` | `(id: string or number, url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: copyRow

Copy a row.

| Method | Type |
| ---------- | ---------- |
| `copyRow` | `(row: number, url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: deleteList

Delete checked items.

| Method | Type |
| ---------- | ---------- |
| `deleteList` | `(message?: false or Nullable<string>, url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: toggleAll

Toggle all checkboxes.

| Method | Type |
| ---------- | ---------- |
| `toggleAll` | `(value: boolean) => this` |

#### :gear: disableAllCheckboxes

| Method | Type |
| ---------- | ---------- |
| `disableAllCheckboxes` | `() => void` |

#### :gear: countChecked

Count checked checkboxes.

| Method | Type |
| ---------- | ---------- |
| `countChecked` | `() => number` |

#### :gear: getChecked

Get Checked boxes.

| Method | Type |
| ---------- | ---------- |
| `getChecked` | `() => HTMLInputElement[]` |

#### :gear: getCheckedValues

| Method | Type |
| ---------- | ---------- |
| `getCheckedValues` | `() => string[]` |

#### :gear: validateChecked

Validate there has one or more checked boxes.

| Method | Type |
| ---------- | ---------- |
| `validateChecked` | `(event?: Event or undefined, callback?: ((grid: UnicornGridElement) => any) or undefined, msg?: string or undefined) => this` |

#### :gear: hasChecked

| Method | Type |
| ---------- | ---------- |
| `hasChecked` | `() => boolean` |

#### :gear: reorderAll

Reorder all.

| Method | Type |
| ---------- | ---------- |
| `reorderAll` | `(url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: moveItem

Reorder items.

| Method | Type |
| ---------- | ---------- |
| `moveItem` | `(id: string or number, delta: number, url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: moveUp

| Method | Type |
| ---------- | ---------- |
| `moveUp` | `(id: string or number, url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: moveDown

| Method | Type |
| ---------- | ---------- |
| `moveDown` | `(id: string or number, url?: Nullable<string>, data?: Nullable<Record<string, any>>) => boolean` |

#### :gear: getId

| Method | Type |
| ---------- | ---------- |
| `getId` | `(suffix?: string) => string` |

### Properties

- [options](#gear-options)
- [ordering](#gear-ordering)
- [state](#gear-state)

#### :gear: options

| Property | Type |
| ---------- | ---------- |
| `options` | `Record<string, any>` |

#### :gear: ordering

| Property | Type |
| ---------- | ---------- |
| `ordering` | `string` |

#### :gear: state

| Property | Type |
| ---------- | ---------- |
| `state` | `{}` |

## :factory: ListDependent

### Static Methods

- [handle](#gear-handle)

#### :gear: handle

| Method | Type |
| ---------- | ---------- |
| `handle` | `(el: string or HTMLSelectElement, dependent?: string or HTMLSelectElement or undefined, options?: Partial<ListDependentOptions>) => ListDependent` |

### Methods

- [bindEvents](#gear-bindevents)
- [changeList](#gear-changelist)
- [sourceUpdate](#gear-sourceupdate)
- [abort](#gear-abort)
- [updateListElements](#gear-updatelistelements)
- [appendOptionTo](#gear-appendoptionto)
- [isSelected](#gear-isselected)
- [beforeHook](#gear-beforehook)
- [afterHook](#gear-afterhook)
- [mergeOptions](#gear-mergeoptions)

#### :gear: bindEvents

Bind events.

| Method | Type |
| ---------- | ---------- |
| `bindEvents` | `() => void` |

#### :gear: changeList

Update the list elements.

| Method | Type |
| ---------- | ---------- |
| `changeList` | `(value: string, initial?: boolean) => void` |

#### :gear: sourceUpdate

Update list by source.

| Method | Type |
| ---------- | ---------- |
| `sourceUpdate` | `(value: string, initial?: boolean) => void` |

#### :gear: abort

| Method | Type |
| ---------- | ---------- |
| `abort` | `() => void` |

#### :gear: updateListElements

| Method | Type |
| ---------- | ---------- |
| `updateListElements` | `(items: MaybeGroupedListItems) => void` |

#### :gear: appendOptionTo

| Method | Type |
| ---------- | ---------- |
| `appendOptionTo` | `(item: any, parent: any) => void` |

#### :gear: isSelected

| Method | Type |
| ---------- | ---------- |
| `isSelected` | `(value: string) => boolean` |

#### :gear: beforeHook

Before hook.

| Method | Type |
| ---------- | ---------- |
| `beforeHook` | `(value: string, element: HTMLSelectElement, dependent: HTMLSelectElement) => any` |

#### :gear: afterHook

After hook.

| Method | Type |
| ---------- | ---------- |
| `afterHook` | `(value: string, element: HTMLSelectElement, dependent: HTMLSelectElement) => any` |

#### :gear: mergeOptions

| Method | Type |
| ---------- | ---------- |
| `mergeOptions` | `(options: Partial<ListDependentOptions>) => ListDependentOptions` |

### Properties

- [element](#gear-element)
- [dependent](#gear-dependent)
- [options](#gear-options)
- [abortController](#gear-abortcontroller)

#### :gear: element

| Property | Type |
| ---------- | ---------- |
| `element` | `HTMLSelectElement` |

#### :gear: dependent

| Property | Type |
| ---------- | ---------- |
| `dependent` | `HTMLSelectElement` |

#### :gear: options

| Property | Type |
| ---------- | ---------- |
| `options` | `ListDependentOptions` |

#### :gear: abortController

| Property | Type |
| ---------- | ---------- |
| `abortController` | `AbortController or null` |

## :factory: EventMixin

### Methods

- [on](#gear-on)
- [on](#gear-on)
- [on](#gear-on)
- [once](#gear-once)
- [once](#gear-once)
- [once](#gear-once)
- [off](#gear-off)
- [trigger](#gear-trigger)
- [trigger](#gear-trigger)
- [trigger](#gear-trigger)
- [listeners](#gear-listeners)

#### :gear: on

| Method | Type |
| ---------- | ---------- |
| `on` | `{ <T extends any[]>(event: string, handler: EventHandler<T>): this; (event: string or string[], handler: EventHandler<any[]>): this; }` |

#### :gear: on

| Method | Type |
| ---------- | ---------- |
| `on` | `{ <T extends any[]>(event: string, handler: EventHandler<T>): this; (event: string or string[], handler: EventHandler<any[]>): this; }` |

#### :gear: on

| Method | Type |
| ---------- | ---------- |
| `on` | `{ <T extends any[]>(event: string, handler: EventHandler<T>): this; (event: string or string[], handler: EventHandler<any[]>): this; }` |

#### :gear: once

| Method | Type |
| ---------- | ---------- |
| `once` | `{ <T extends any[]>(event: string, handler: EventHandler<T>): this; (event: string or string[], handler: EventHandler<any[]>): this; }` |

#### :gear: once

| Method | Type |
| ---------- | ---------- |
| `once` | `{ <T extends any[]>(event: string, handler: EventHandler<T>): this; (event: string or string[], handler: EventHandler<any[]>): this; }` |

#### :gear: once

| Method | Type |
| ---------- | ---------- |
| `once` | `{ <T extends any[]>(event: string, handler: EventHandler<T>): this; (event: string or string[], handler: EventHandler<any[]>): this; }` |

#### :gear: off

| Method | Type |
| ---------- | ---------- |
| `off` | `(event: string, handler?: EventHandler<any[]> or undefined) => this` |

#### :gear: trigger

| Method | Type |
| ---------- | ---------- |
| `trigger` | `{ <T extends any[]>(event: string, ...args: T): this; (event: string[], ...args: any[]): this; }` |

#### :gear: trigger

| Method | Type |
| ---------- | ---------- |
| `trigger` | `{ <T extends any[]>(event: string, ...args: T): this; (event: string[], ...args: any[]): this; }` |

#### :gear: trigger

| Method | Type |
| ---------- | ---------- |
| `trigger` | `{ <T extends any[]>(event: string, ...args: T): this; (event: string[], ...args: any[]): this; }` |

#### :gear: listeners

| Method | Type |
| ---------- | ---------- |
| `listeners` | `(event: string) => EventHandler<any[]>[]` |

### Properties

- [_listeners](#gear-_listeners)

#### :gear: _listeners

| Property | Type |
| ---------- | ---------- |
| `_listeners` | `Record<string, EventHandler<any[]>[]>` |

## :factory: S3MultipartUploader

### Methods

- [updateProgress](#gear-updateprogress)
- [setChunkSize](#gear-setchunksize)
- [setChunkSizeInMiB](#gear-setchunksizeinmib)
- [replaceExt](#gear-replaceext)
- [on](#gear-on)
- [on](#gear-on)
- [on](#gear-on)
- [on](#gear-on)

#### :gear: updateProgress

| Method | Type |
| ---------- | ---------- |
| `updateProgress` | `(loaded: number, total: number, options: S3MultipartUploaderRequestOptions) => void` |

#### :gear: setChunkSize

| Method | Type |
| ---------- | ---------- |
| `setChunkSize` | `(size: number) => this` |

#### :gear: setChunkSizeInMiB

| Method | Type |
| ---------- | ---------- |
| `setChunkSizeInMiB` | `(size: number) => this` |

#### :gear: replaceExt

| Method | Type |
| ---------- | ---------- |
| `replaceExt` | `(path: string, file: File or Blob) => string` |

#### :gear: on

| Method | Type |
| ---------- | ---------- |
| `on` | `{ (event: "start", handler: (file: File, data: { [name: string]: any; path: string; extra: Record<string, any>; }) => void): this; (event: "success", handler: (url: string) => void): this; (event: "progress", handler: (event: ProgressEvent) => void): this; }` |

#### :gear: on

| Method | Type |
| ---------- | ---------- |
| `on` | `{ (event: "start", handler: (file: File, data: { [name: string]: any; path: string; extra: Record<string, any>; }) => void): this; (event: "success", handler: (url: string) => void): this; (event: "progress", handler: (event: ProgressEvent) => void): this; }` |

#### :gear: on

| Method | Type |
| ---------- | ---------- |
| `on` | `{ (event: "start", handler: (file: File, data: { [name: string]: any; path: string; extra: Record<string, any>; }) => void): this; (event: "success", handler: (url: string) => void): this; (event: "progress", handler: (event: ProgressEvent) => void): this; }` |

#### :gear: on

| Method | Type |
| ---------- | ---------- |
| `on` | `{ (event: "start", handler: (file: File, data: { [name: string]: any; path: string; extra: Record<string, any>; }) => void): this; (event: "success", handler: (url: string) => void): this; (event: "progress", handler: (event: ProgressEvent) => void): this; }` |

### Properties

- [options](#gear-options)

#### :gear: options

| Property | Type |
| ---------- | ---------- |
| `options` | `S3MultipartUploaderOptions` |

## :factory: S3Uploader

### Methods

- [replaceExt](#gear-replaceext)
- [on](#gear-on)
- [on](#gear-on)
- [on](#gear-on)
- [on](#gear-on)
- [on](#gear-on)
- [on](#gear-on)
- [onStart](#gear-onstart)
- [onSuccess](#gear-onsuccess)
- [onEnd](#gear-onend)
- [onProgress](#gear-onprogress)
- [onProgressWithTotal](#gear-onprogresswithtotal)

#### :gear: replaceExt

| Method | Type |
| ---------- | ---------- |
| `replaceExt` | `(path: string, file: File or Blob) => string` |

#### :gear: on

| Method | Type |
| ---------- | ---------- |
| `on` | `{ (event: "start", handler: StartEventHandler): this; (event: "success", handler: SuccessEventHandler): this; (event: "end", handler: EndEventHandler): this; (event: "upload-progress", handler: UploadProgressEventHandler): this; (event: "progress", handler: ProgressEventHandler): this; }` |

#### :gear: on

| Method | Type |
| ---------- | ---------- |
| `on` | `{ (event: "start", handler: StartEventHandler): this; (event: "success", handler: SuccessEventHandler): this; (event: "end", handler: EndEventHandler): this; (event: "upload-progress", handler: UploadProgressEventHandler): this; (event: "progress", handler: ProgressEventHandler): this; }` |

#### :gear: on

| Method | Type |
| ---------- | ---------- |
| `on` | `{ (event: "start", handler: StartEventHandler): this; (event: "success", handler: SuccessEventHandler): this; (event: "end", handler: EndEventHandler): this; (event: "upload-progress", handler: UploadProgressEventHandler): this; (event: "progress", handler: ProgressEventHandler): this; }` |

#### :gear: on

| Method | Type |
| ---------- | ---------- |
| `on` | `{ (event: "start", handler: StartEventHandler): this; (event: "success", handler: SuccessEventHandler): this; (event: "end", handler: EndEventHandler): this; (event: "upload-progress", handler: UploadProgressEventHandler): this; (event: "progress", handler: ProgressEventHandler): this; }` |

#### :gear: on

| Method | Type |
| ---------- | ---------- |
| `on` | `{ (event: "start", handler: StartEventHandler): this; (event: "success", handler: SuccessEventHandler): this; (event: "end", handler: EndEventHandler): this; (event: "upload-progress", handler: UploadProgressEventHandler): this; (event: "progress", handler: ProgressEventHandler): this; }` |

#### :gear: on

| Method | Type |
| ---------- | ---------- |
| `on` | `{ (event: "start", handler: StartEventHandler): this; (event: "success", handler: SuccessEventHandler): this; (event: "end", handler: EndEventHandler): this; (event: "upload-progress", handler: UploadProgressEventHandler): this; (event: "progress", handler: ProgressEventHandler): this; }` |

#### :gear: onStart

| Method | Type |
| ---------- | ---------- |
| `onStart` | `(handler: StartEventHandler) => this` |

#### :gear: onSuccess

| Method | Type |
| ---------- | ---------- |
| `onSuccess` | `(handler: SuccessEventHandler) => this` |

#### :gear: onEnd

| Method | Type |
| ---------- | ---------- |
| `onEnd` | `(handler: EndEventHandler) => this` |

#### :gear: onProgress

| Method | Type |
| ---------- | ---------- |
| `onProgress` | `(handler: UploadProgressEventHandler) => this` |

#### :gear: onProgressWithTotal

| Method | Type |
| ---------- | ---------- |
| `onProgressWithTotal` | `(handler: ProgressEventHandler) => this` |

### Properties

- [options](#gear-options)
- [http](#gear-http)

#### :gear: options

| Property | Type |
| ---------- | ---------- |
| `options` | `S3UploaderGlobalOptions` |

#### :gear: http

| Property | Type |
| ---------- | ---------- |
| `http` | `{ axios: AxiosInstance; request: <T = any, D = any>(options: AxiosRequestConfig<any>) => Promise<AxiosResponse<T, D, {}>>; ... 11 more ...; isAxiosError: <T = any, D = any>(payload: any) => payload is AxiosError<...>; } or undefined` |

## :factory: ShowOn

### Methods

- [init](#gear-init)
- [updateShowState](#gear-updateshowstate)
- [isValueMatched](#gear-isvaluematched)
- [nodeType](#gear-nodetype)

#### :gear: init

| Method | Type |
| ---------- | ---------- |
| `init` | `() => void` |

#### :gear: updateShowState

| Method | Type |
| ---------- | ---------- |
| `updateShowState` | `(target: HTMLElement, value: any, duration?: number) => void` |

#### :gear: isValueMatched

| Method | Type |
| ---------- | ---------- |
| `isValueMatched` | `(target: HTMLElement, value: any) => boolean` |

#### :gear: nodeType

| Method | Type |
| ---------- | ---------- |
| `nodeType` | `(el: HTMLElement) => "input" or "select" or "textarea" or "checkbox" or "radio"` |

References:

* [https://github.com/nickjackson/val/blob/master/index.js#L55](https://github.com/nickjackson/val/blob/master/index.js#L55)


### Properties

- [el](#gear-el)
- [input](#gear-input)
- [conditions](#gear-conditions)
- [targets](#gear-targets)
- [defaultReadonly](#gear-defaultreadonly)
- [initialDisplay](#gear-initialdisplay)

#### :gear: el

| Property | Type |
| ---------- | ---------- |
| `el` | `HTMLElement` |

#### :gear: input

| Property | Type |
| ---------- | ---------- |
| `input` | `HTMLInputTypes` |

#### :gear: conditions

| Property | Type |
| ---------- | ---------- |
| `conditions` | `Conditions` |

#### :gear: targets

| Property | Type |
| ---------- | ---------- |
| `targets` | `{}` |

#### :gear: defaultReadonly

| Property | Type |
| ---------- | ---------- |
| `defaultReadonly` | `boolean or null` |

#### :gear: initialDisplay

| Property | Type |
| ---------- | ---------- |
| `initialDisplay` | `string` |

## :factory: TinymceController

### Methods

- [prepareOptions](#gear-prepareoptions)
- [insert](#gear-insert)
- [getValue](#gear-getvalue)
- [setValue](#gear-setvalue)

#### :gear: prepareOptions

| Method | Type |
| ---------- | ---------- |
| `prepareOptions` | `(options: Record<string, any>, version?: string) => Record<string, any>` |

#### :gear: insert

| Method | Type |
| ---------- | ---------- |
| `insert` | `(text: string) => void` |

#### :gear: getValue

| Method | Type |
| ---------- | ---------- |
| `getValue` | `() => string` |

#### :gear: setValue

| Method | Type |
| ---------- | ---------- |
| `setValue` | `(text: string) => void` |

### Properties

- [editor](#gear-editor)
- [options](#gear-options)

#### :gear: editor

| Property | Type |
| ---------- | ---------- |
| `editor` | `Editor or undefined` |

#### :gear: options

| Property | Type |
| ---------- | ---------- |
| `options` | `Record<string, any>` |

## :factory: ButtonRadio

### Static Methods

- [handle](#gear-handle)

#### :gear: handle

| Method | Type |
| ---------- | ---------- |
| `handle` | `(el: string or HTMLElement, options?: ButtonRadioOptions) => any` |

### Methods

- [prepareButton](#gear-preparebutton)
- [syncState](#gear-syncstate)
- [parseClasses](#gear-parseclasses)

#### :gear: prepareButton

| Method | Type |
| ---------- | ---------- |
| `prepareButton` | `(radio: HTMLInputElement, exists?: boolean) => HTMLButtonElement` |

#### :gear: syncState

| Method | Type |
| ---------- | ---------- |
| `syncState` | `() => void` |

#### :gear: parseClasses

| Method | Type |
| ---------- | ---------- |
| `parseClasses` | `(...className: string[]) => string[]` |

### Properties

- [wrapper](#gear-wrapper)
- [element](#gear-element)
- [radios](#gear-radios)
- [inputs](#gear-inputs)
- [buttons](#gear-buttons)
- [colors](#gear-colors)
- [options](#gear-options)

#### :gear: wrapper

| Property | Type |
| ---------- | ---------- |
| `wrapper` | `HTMLElement` |

#### :gear: element

| Property | Type |
| ---------- | ---------- |
| `element` | `HTMLElement` |

#### :gear: radios

| Property | Type |
| ---------- | ---------- |
| `radios` | `HTMLInputElement[]` |

#### :gear: inputs

| Property | Type |
| ---------- | ---------- |
| `inputs` | `HTMLInputElement[]` |

#### :gear: buttons

| Property | Type |
| ---------- | ---------- |
| `buttons` | `HTMLButtonElement[]` |

#### :gear: colors

| Property | Type |
| ---------- | ---------- |
| `colors` | `string[]` |

#### :gear: options

| Property | Type |
| ---------- | ---------- |
| `options` | `Required<ButtonRadioOptions>` |

## :factory: KeepTab

### Methods

- [bindEvents](#gear-bindevents)
- [getButtonHref](#gear-getbuttonhref)
- [findTabButtonByHref](#gear-findtabbuttonbyhref)
- [activateTab](#gear-activatetab)
- [hasTab](#gear-hastab)
- [switchTab](#gear-switchtab)

#### :gear: bindEvents

| Method | Type |
| ---------- | ---------- |
| `bindEvents` | `() => void` |

#### :gear: getButtonHref

| Method | Type |
| ---------- | ---------- |
| `getButtonHref` | `(button: HTMLAnchorElement) => string` |

#### :gear: findTabButtonByHref

| Method | Type |
| ---------- | ---------- |
| `findTabButtonByHref` | `(href: string) => HTMLAnchorElement or undefined` |

#### :gear: activateTab

| Method | Type |
| ---------- | ---------- |
| `activateTab` | `(href: string) => void` |

#### :gear: hasTab

| Method | Type |
| ---------- | ---------- |
| `hasTab` | `(href: string) => boolean` |

#### :gear: switchTab

Switch tab.

| Method | Type |
| ---------- | ---------- |
| `switchTab` | `() => true or undefined` |

### Properties

- [$element](#gear-$element)
- [tabButtons](#gear-tabbuttons)
- [storageKey](#gear-storagekey)
- [options](#gear-options)

#### :gear: $element

| Property | Type |
| ---------- | ---------- |
| `$element` | `HTMLElement` |

#### :gear: tabButtons

| Property | Type |
| ---------- | ---------- |
| `tabButtons` | `NodeListOf<HTMLElement>` |

#### :gear: storageKey

| Property | Type |
| ---------- | ---------- |
| `storageKey` | `string` |

#### :gear: options

| Property | Type |
| ---------- | ---------- |
| `options` | `any` |

## :factory: UIBootstrap5

### Static Methods

- [get](#gear-get)

#### :gear: get

| Method | Type |
| ---------- | ---------- |
| `get` | `() => UIBootstrap5` |

### Methods

- [renderMessage](#gear-rendermessage)
- [clearMessages](#gear-clearmessages)
- [tooltip](#gear-tooltip)
- [getMajorVersion](#gear-getmajorversion)
- [pushBootstrapToGlobal](#gear-pushbootstraptoglobal)

#### :gear: renderMessage

| Method | Type |
| ---------- | ---------- |
| `renderMessage` | `(messages: string or string[], type?: string) => () => void` |

#### :gear: clearMessages

| Method | Type |
| ---------- | ---------- |
| `clearMessages` | `() => void` |

#### :gear: tooltip

| Method | Type |
| ---------- | ---------- |
| `tooltip` | `(selector?: string or Element or NodeListOf<Element>, config?: Partial<Options>) => Tooltip[]` |

#### :gear: getMajorVersion

| Method | Type |
| ---------- | ---------- |
| `getMajorVersion` | `(module: any) => number` |

#### :gear: pushBootstrapToGlobal

| Method | Type |
| ---------- | ---------- |
| `pushBootstrapToGlobal` | `() => void` |

### Static Properties

- [instance](#gear-instance)

#### :gear: instance

| Property | Type |
| ---------- | ---------- |
| `instance` | `UIBootstrap5 or null` |

### Properties

- [bootstrap](#gear-bootstrap)

#### :gear: bootstrap

| Property | Type |
| ---------- | ---------- |
| `bootstrap` | `typeof import("D:/www/earth/node_modules/@types/bootstrap/index")` |

## :factory: UnicornFormValidation

### Static Methods

- [addGlobalValidator](#gear-addglobalvalidator)

#### :gear: addGlobalValidator

Add validator handler.

| Method | Type |
| ---------- | ---------- |
| `addGlobalValidator` | `<T extends unknown, E extends HTMLElement, P = Record<string, any>>(name: string, handler: ValidationHandler<T, E, P>, options?: ValidatorOptions<E, P>) => typeof UnicornFormValidation` |

### Methods

- [mergeOptions](#gear-mergeoptions)
- [init](#gear-init)
- [findDOMFields](#gear-finddomfields)
- [prepareFields](#gear-preparefields)
- [prepareFieldWrapper](#gear-preparefieldwrapper)
- [findFields](#gear-findfields)
- [getFieldComponent](#gear-getfieldcomponent)
- [validateAll](#gear-validateall)
- [scrollTo](#gear-scrollto)
- [markFormAsValidated](#gear-markformasvalidated)
- [markFormAsUnvalidated](#gear-markformasunvalidated)
- [addField](#gear-addfield)
- [registerDefaultValidators](#gear-registerdefaultvalidators)
- [addValidator](#gear-addvalidator)

#### :gear: mergeOptions

| Method | Type |
| ---------- | ---------- |
| `mergeOptions` | `(options: Partial<FormValidationOptions>) => FormValidationOptions` |

#### :gear: init

| Method | Type |
| ---------- | ---------- |
| `init` | `() => void` |

#### :gear: findDOMFields

| Method | Type |
| ---------- | ---------- |
| `findDOMFields` | `() => HTMLElement[]` |

#### :gear: prepareFields

| Method | Type |
| ---------- | ---------- |
| `prepareFields` | `(inputs: HTMLElement[]) => Promise<void>` |

#### :gear: prepareFieldWrapper

| Method | Type |
| ---------- | ---------- |
| `prepareFieldWrapper` | `(input: HTMLElement) => HTMLElement or null` |

#### :gear: findFields

| Method | Type |
| ---------- | ---------- |
| `findFields` | `(containsPresets?: boolean) => HTMLElement[]` |

#### :gear: getFieldComponent

| Method | Type |
| ---------- | ---------- |
| `getFieldComponent` | `(input: HTMLElement) => UnicornFieldValidation or null` |

#### :gear: validateAll

| Method | Type |
| ---------- | ---------- |
| `validateAll` | `(fields?: Nullable<HTMLElement[]>) => boolean` |

#### :gear: scrollTo

| Method | Type |
| ---------- | ---------- |
| `scrollTo` | `(element: HTMLElement) => void` |

#### :gear: markFormAsValidated

| Method | Type |
| ---------- | ---------- |
| `markFormAsValidated` | `() => void` |

#### :gear: markFormAsUnvalidated

| Method | Type |
| ---------- | ---------- |
| `markFormAsUnvalidated` | `() => void` |

#### :gear: addField

| Method | Type |
| ---------- | ---------- |
| `addField` | `(field: HTMLElement) => this` |

#### :gear: registerDefaultValidators

| Method | Type |
| ---------- | ---------- |
| `registerDefaultValidators` | `() => void` |

#### :gear: addValidator

Add validator handler.

| Method | Type |
| ---------- | ---------- |
| `addValidator` | `<T extends unknown, E extends HTMLElement, P = Record<string, any>>(name: string, handler: ValidationHandler<T, E, P>, options?: ValidatorOptions<E, P>) => this` |

### Static Properties

- [globalValidators](#gear-globalvalidators)
- [is](#gear-is)

#### :gear: globalValidators

| Property | Type |
| ---------- | ---------- |
| `globalValidators` | `Record<string, Validator<any, any, any>>` |

#### :gear: is

| Property | Type |
| ---------- | ---------- |
| `is` | `string` |

### Properties

- [presetFields](#gear-presetfields)
- [validators](#gear-validators)
- [options](#gear-options)
- [$form](#gear-$form)

#### :gear: presetFields

| Property | Type |
| ---------- | ---------- |
| `presetFields` | `HTMLElement[]` |

#### :gear: validators

| Property | Type |
| ---------- | ---------- |
| `validators` | `Record<string, Validator<any, any, any>>` |

#### :gear: options

| Property | Type |
| ---------- | ---------- |
| `options` | `FormValidationOptions` |

#### :gear: $form

| Property | Type |
| ---------- | ---------- |
| `$form` | `HTMLElement` |

## :factory: UnicornFieldValidation

### Methods

- [mergeOptions](#gear-mergeoptions)
- [selectInput](#gear-selectinput)
- [init](#gear-init)
- [bindEvents](#gear-bindevents)
- [prepareWrapper](#gear-preparewrapper)
- [checkValidity](#gear-checkvalidity)
- [runCustomValidity](#gear-runcustomvalidity)
- [checkCustomDataAttributeValidity](#gear-checkcustomdataattributevalidity)
- [checkInputOptionsValidity](#gear-checkinputoptionsvalidity)
- [updateValidClass](#gear-updatevalidclass)
- [getFormValidation](#gear-getformvalidation)
- [getValidator](#gear-getvalidator)
- [handleCustomResult](#gear-handlecustomresult)
- [handleAsyncCustomResult](#gear-handleasynccustomresult)
- [raiseCustomErrorState](#gear-raisecustomerrorstate)
- [setAsInvalidAndReport](#gear-setasinvalidandreport)
- [setCustomValidity](#gear-setcustomvalidity)
- [reportValidity](#gear-reportvalidity)
- [showInvalidResponse](#gear-showinvalidresponse)
- [getErrorElement](#gear-geterrorelement)
- [createHelpElement](#gear-createhelpelement)
- [parseSelector](#gear-parseselector)
- [setAsValidAndClearResponse](#gear-setasvalidandclearresponse)
- [clearInvalidResponse](#gear-clearinvalidresponse)
- [getForm](#gear-getform)
- [findLabel](#gear-findlabel)

#### :gear: mergeOptions

| Method | Type |
| ---------- | ---------- |
| `mergeOptions` | `(options: Partial<FieldValidationOptions>) => FieldValidationOptions` |

#### :gear: selectInput

| Method | Type |
| ---------- | ---------- |
| `selectInput` | `() => InputElements or undefined` |

#### :gear: init

| Method | Type |
| ---------- | ---------- |
| `init` | `() => void` |

#### :gear: bindEvents

| Method | Type |
| ---------- | ---------- |
| `bindEvents` | `() => void` |

#### :gear: prepareWrapper

| Method | Type |
| ---------- | ---------- |
| `prepareWrapper` | `() => void` |

#### :gear: checkValidity

| Method | Type |
| ---------- | ---------- |
| `checkValidity` | `() => boolean` |

#### :gear: runCustomValidity

| Method | Type |
| ---------- | ---------- |
| `runCustomValidity` | `() => boolean` |

#### :gear: checkCustomDataAttributeValidity

| Method | Type |
| ---------- | ---------- |
| `checkCustomDataAttributeValidity` | `() => boolean` |

#### :gear: checkInputOptionsValidity

| Method | Type |
| ---------- | ---------- |
| `checkInputOptionsValidity` | `() => boolean` |

#### :gear: updateValidClass

| Method | Type |
| ---------- | ---------- |
| `updateValidClass` | `(valid: Boolean) => void` |

#### :gear: getFormValidation

| Method | Type |
| ---------- | ---------- |
| `getFormValidation` | `(element?: Nullable<HTMLFormElement>) => UnicornFormValidation or null` |

#### :gear: getValidator

| Method | Type |
| ---------- | ---------- |
| `getValidator` | `(name: string) => [Validator<any, HTMLElement, Record<string, any>>, Record<string, any>] or null` |

#### :gear: handleCustomResult

| Method | Type |
| ---------- | ---------- |
| `handleCustomResult` | `(result: string or boolean or undefined, validator?: Nullable<Validator<any, HTMLElement, Record<string, any>>>) => boolean` |

#### :gear: handleAsyncCustomResult

| Method | Type |
| ---------- | ---------- |
| `handleAsyncCustomResult` | `(result: boolean, validator?: Nullable<Validator<any, HTMLElement, Record<string, any>>>) => boolean` |

#### :gear: raiseCustomErrorState

| Method | Type |
| ---------- | ---------- |
| `raiseCustomErrorState` | `(validator: Validator<any, HTMLElement, Record<string, any>>) => void` |

#### :gear: setAsInvalidAndReport

| Method | Type |
| ---------- | ---------- |
| `setAsInvalidAndReport` | `(error: string) => void` |

#### :gear: setCustomValidity

| Method | Type |
| ---------- | ---------- |
| `setCustomValidity` | `(error: string) => void` |

#### :gear: reportValidity

| Method | Type |
| ---------- | ---------- |
| `reportValidity` | `() => void` |

#### :gear: showInvalidResponse

| Method | Type |
| ---------- | ---------- |
| `showInvalidResponse` | `() => void` |

#### :gear: getErrorElement

| Method | Type |
| ---------- | ---------- |
| `getErrorElement` | `() => Element or null` |

#### :gear: createHelpElement

| Method | Type |
| ---------- | ---------- |
| `createHelpElement` | `() => HTMLElement` |

#### :gear: parseSelector

| Method | Type |
| ---------- | ---------- |
| `parseSelector` | `(subselector: string) => { tags: string[]; classes: string[]; ids: string[]; attrs: string[][]; }` |

References:

* [https://stackoverflow.com/a/17888178](https://stackoverflow.com/a/17888178)


#### :gear: setAsValidAndClearResponse

| Method | Type |
| ---------- | ---------- |
| `setAsValidAndClearResponse` | `() => void` |

#### :gear: clearInvalidResponse

| Method | Type |
| ---------- | ---------- |
| `clearInvalidResponse` | `() => void` |

#### :gear: getForm

| Method | Type |
| ---------- | ---------- |
| `getForm` | `() => HTMLFormElement` |

#### :gear: findLabel

| Method | Type |
| ---------- | ---------- |
| `findLabel` | `() => null` |

### Static Properties

- [is](#gear-is)

#### :gear: is

| Property | Type |
| ---------- | ---------- |
| `is` | `string` |

### Properties

- [$input](#gear-$input)
- [options](#gear-options)

#### :gear: $input

| Property | Type |
| ---------- | ---------- |
| `$input` | `InputElements or undefined` |

#### :gear: options

| Property | Type |
| ---------- | ---------- |
| `options` | `FieldValidationOptions` |

## :factory: UnicornUI

### Methods

- [installTheme](#gear-installtheme)

#### :gear: installTheme

| Method | Type |
| ---------- | ---------- |
| `installTheme` | `(theme: any) => void` |

### Properties

- [theme](#gear-theme)

#### :gear: theme

| Property | Type |
| ---------- | ---------- |
| `theme` | `UIThemeInterface or undefined` |

## :factory: UnicornSystemUri

### Static Methods

- [get](#gear-get)

#### :gear: get

| Method | Type |
| ---------- | ---------- |
| `get` | `() => UnicornSystemUri` |

### Methods

- [path](#gear-path)
- [root](#gear-root)
- [current](#gear-current)
- [full](#gear-full)
- [route](#gear-route)
- [script](#gear-script)
- [routeWithQuery](#gear-routewithquery)
- [routeAndQuery](#gear-routeandquery)

#### :gear: path

| Method | Type |
| ---------- | ---------- |
| `path` | `(path?: string) => string` |

#### :gear: root

| Method | Type |
| ---------- | ---------- |
| `root` | `(path?: string) => string` |

#### :gear: current

| Method | Type |
| ---------- | ---------- |
| `current` | `() => string` |

#### :gear: full

| Method | Type |
| ---------- | ---------- |
| `full` | `() => string` |

#### :gear: route

| Method | Type |
| ---------- | ---------- |
| `route` | `() => string` |

#### :gear: script

| Method | Type |
| ---------- | ---------- |
| `script` | `() => string` |

#### :gear: routeWithQuery

| Method | Type |
| ---------- | ---------- |
| `routeWithQuery` | `() => string` |

#### :gear: routeAndQuery

| Method | Type |
| ---------- | ---------- |
| `routeAndQuery` | `() => string[]` |

### Static Properties

- [instance](#gear-instance)

#### :gear: instance

| Property | Type |
| ---------- | ---------- |
| `instance` | `UnicornSystemUri` |

## :factory: UnicornAssetUri

### Static Methods

- [get](#gear-get)

#### :gear: get

| Method | Type |
| ---------- | ---------- |
| `get` | `() => UnicornAssetUri` |

### Methods

- [path](#gear-path)
- [root](#gear-root)

#### :gear: path

| Method | Type |
| ---------- | ---------- |
| `path` | `(path?: string) => string` |

#### :gear: root

| Method | Type |
| ---------- | ---------- |
| `root` | `(path?: string) => string` |

### Static Properties

- [instance](#gear-instance)

#### :gear: instance

| Property | Type |
| ---------- | ---------- |
| `instance` | `UnicornAssetUri` |

## :factory: UnicornApp

### Methods

- [use](#gear-use)
- [detach](#gear-detach)
- [inject](#gear-inject)
- [inject](#gear-inject)
- [inject](#gear-inject)
- [inject](#gear-inject)
- [provide](#gear-provide)
- [wait](#gear-wait)
- [completed](#gear-completed)
- [macro](#gear-macro)

#### :gear: use

| Method | Type |
| ---------- | ---------- |
| `use` | `(plugin: UnicornPlugin, options?: Record<string, any>) => this` |

#### :gear: detach

| Method | Type |
| ---------- | ---------- |
| `detach` | `(plugin: any) => this` |

#### :gear: inject

| Method | Type |
| ---------- | ---------- |
| `inject` | `{ <T>(id: InjectionKey<T>): T; <T>(id: InjectionKey<T>, def: T): T; <T>(id: InjectionKey<T>, def?: T or undefined): T; }` |

#### :gear: inject

| Method | Type |
| ---------- | ---------- |
| `inject` | `{ <T>(id: InjectionKey<T>): T; <T>(id: InjectionKey<T>, def: T): T; <T>(id: InjectionKey<T>, def?: T or undefined): T; }` |

#### :gear: inject

| Method | Type |
| ---------- | ---------- |
| `inject` | `{ <T>(id: InjectionKey<T>): T; <T>(id: InjectionKey<T>, def: T): T; <T>(id: InjectionKey<T>, def?: T or undefined): T; }` |

#### :gear: inject

| Method | Type |
| ---------- | ---------- |
| `inject` | `{ <T>(id: InjectionKey<T>): T; <T>(id: InjectionKey<T>, def: T): T; <T>(id: InjectionKey<T>, def?: T or undefined): T; }` |

#### :gear: provide

| Method | Type |
| ---------- | ---------- |
| `provide` | `<T>(id: InjectionKey<T>, value: any) => this` |

#### :gear: wait

| Method | Type |
| ---------- | ---------- |
| `wait` | `(callback: Function) => Promise<any>` |

#### :gear: completed

| Method | Type |
| ---------- | ---------- |
| `completed` | `() => Promise<any[]>` |

#### :gear: macro

| Method | Type |
| ---------- | ---------- |
| `macro` | `(name: string, prop: any) => this` |

### Properties

- [registry](#gear-registry)
- [plugins](#gear-plugins)
- [waits](#gear-waits)
- [options](#gear-options)
- [defaultOptions](#gear-defaultoptions)
- [domready](#gear-domready)
- [data](#gear-data)

#### :gear: registry

| Property | Type |
| ---------- | ---------- |
| `registry` | `Map<any, any>` |

#### :gear: plugins

| Property | Type |
| ---------- | ---------- |
| `plugins` | `Map<any, any>` |

#### :gear: waits

| Property | Type |
| ---------- | ---------- |
| `waits` | `Promise<any>[]` |

#### :gear: options

| Property | Type |
| ---------- | ---------- |
| `options` | `Record<string, any>` |

#### :gear: defaultOptions

| Property | Type |
| ---------- | ---------- |
| `defaultOptions` | `Record<string, any>` |

#### :gear: domready

| Property | Type |
| ---------- | ---------- |
| `domready` | `(callback?: ((value: any) => any) or undefined) => Promise<void>` |

#### :gear: data

| Property | Type |
| ---------- | ---------- |
| `data` | `{ (name: string, data?: any): any; <T = void, R = [T] extends [void] ? any : T or undefined>(name: string): R; <T = void, R = [T] extends [void] ? any : T or undefined>(ele: Element, name: string): R; (ele: Element, name: string, value: any): any; }` |

## :factory: MultiUploaderElement

### Static Properties

- [is](#gear-is)

#### :gear: is

| Property | Type |
| ---------- | ---------- |
| `is` | `string` |

### Properties

- [modalElement](#gear-modalelement)
- [vm](#gear-vm)

#### :gear: modalElement

| Property | Type |
| ---------- | ---------- |
| `modalElement` | `HTMLDivElement` |

#### :gear: vm

| Property | Type |
| ---------- | ---------- |
| `vm` | `ComponentPublicInstance` |

## :factory: UnicornPhpAdapter

### Static Methods

- [install](#gear-install)

#### :gear: install

| Method | Type |
| ---------- | ---------- |
| `install` | `(app: UnicornApp) => void` |

## :factory: LegacyLoader

### Static Methods

- [install](#gear-install)

#### :gear: install

| Method | Type |
| ---------- | ---------- |
| `install` | `(app: any) => void` |

### Methods

- [doImport](#gear-doimport)
- [import](#gear-import)
- [importSync](#gear-importsync)
- [minFileName](#gear-minfilename)
- [asImported](#gear-asimported)
- [afterImported](#gear-afterimported)

#### :gear: doImport

| Method | Type |
| ---------- | ---------- |
| `doImport` | `(src: string) => Promise<any>` |

#### :gear: import

Import modules or scripts.

| Method | Type |
| ---------- | ---------- |
| `import` | `(...src: any[]) => Promise<any>` |

#### :gear: importSync

Import sync.

| Method | Type |
| ---------- | ---------- |
| `importSync` | `(...src: any) => Promise<any>` |

#### :gear: minFileName

| Method | Type |
| ---------- | ---------- |
| `minFileName` | `(fileName: string) => string` |

#### :gear: asImported

| Method | Type |
| ---------- | ---------- |
| `asImported` | `(name: string) => void` |

#### :gear: afterImported

Add after import hook for some url or id.

| Method | Type |
| ---------- | ---------- |
| `afterImported` | `(name: string, callback: (resolve: Function, reject?: Function or undefined) => void) => Promise<any>` |
