import { Identifiable , NamedModel } from '@empathyco/x-types' ; import { XEventsTypes } from '../wiring/events.types' ; import { XModuleName } from '../x-modules/x-modules.types' ; param T public export type Dictionary < T = any > = Record < string , T > ; param Type param PropType example public export type PropsWithType < Type , PropType > = { [ Key in keyof Type ] : Type [ Key ] extends PropType ? Key : never ; } [ keyof Type ] ; param T public export type DeepPartial < T > = { [ P in keyof T ] ? : T [ P ] extends NonPrimitive ? T [ P ] extends AnyFunction ? T [ P ] : DeepPartial < T [ P ] > : T [ P ] ; } ; public export type NonPrimitive = Array < any > | Record < any , any > ; public export type Primitive = string | number | boolean | undefined | null | symbol | AnyFunction ; public export type AnyFunction = ( ... args : any [ ] ) => any ; public export type NiladicFunction = ( ) => any ; public export type MonadicFunction = ( someParam : any ) => any ; public export type FirstParameter < SomeFunction extends AnyFunction > = Parameters < SomeFunction > [ 0 ] ; param T public export type Returns < T extends Dictionary < AnyFunction > > = { [ K in keyof T ] : ReturnType < T [ K ] > ; } ; param Type public export type DecoratorFor < Type > = < Key extends string , Target extends Record < Key , Type > > ( target : Target , key : Key ) => void ; public export type ArrowKey = 'ArrowUp' | 'ArrowDown' | 'ArrowRight' | 'ArrowLeft' ; public export type VueCSSClasses = string | Dictionary < boolean > | ( string | Dictionary < boolean > ) [ ] ; public export type Pair < Type > = [ Type , Type ] ; remarks The  XEvent refers to the event the component has to listen to.
 *
 *  public export type TakeNavigationControl = { xEvent : PropsWithType < XEventsTypes , ArrowKey > ; moduleName : XModuleName ; direction : ArrowKey ; } ; /**
 * Events to emit when reaching the  ArrowKey limit.
 *
 *  public export type EventsForDirectionLimit = { [ key in ArrowKey ] : PropsWithType < XEventsTypes , void > ; } ; /**
 * Type representing a grid item. It has to be an
 *  {@link @empathyco/x-types#Identifiable | Identifiable} object that can optionally contain a
 *  {@link @empathyco/x-types#NamedModel.modelName | modelName} .
 *
 *  public export type ListItem = Identifiable & NamedModel ; /**
 * The type returned by the  debounce function. Basically is the function the
 *  debounce receives but debounced and with a method `cancel()` to cancel pending timeouts.
 *
 *  param Params public export interface DebouncedFunction < Params extends any [ ] > { ( ... args ) : void ; cancel ( ) : void ; } public export interface DebounceOptions { leading ? : boolean ; trailing ? : boolean ; } /**
 * The type returned by the  throttle function. Basically is the function the
 *  throttle receives but throttled.
 *
 *  param Params public export interface ThrottleFunction < Params extends any [ ] > { ( ... args ) : void ; } public export type MaybeArray < Something > = Something | Array < Something > ;