Repository URL to install this package:
Version:
2.0.4 ▾
|
export interface IObservableArray<T = any> extends Array<T> {
spliceWithArray(index: number, deleteCount?: number, newItems?: T[]): T[]
observe(
listener: (changeData: IArrayChange<T> | IArraySplice<T>) => void,
fireImmediately?: boolean
): Lambda
intercept(
handler: IInterceptor<IArrayWillChange<T> | IArrayWillSplice<T>>
): Lambda
clear(): T[]
replace(newItems: T[]): T[]
remove(value: T): boolean
}
// https://github.com/mobxjs/mobx/blob/7f57ad4d1eb6d12d389cb27402e21afe9b5edc62/src/utils/utils.ts#L19
export interface Lambda {
(): void
name?: string
}
// https://github.com/mobxjs/mobx/blob/7f57ad4d1eb6d12d389cb27402e21afe9b5edc62/src/types/intercept-utils.ts
export type IInterceptor<T> = (change: T) => T | null
export interface IInterceptable<T> {
interceptors: IInterceptor<T>[] | undefined
intercept(handler: IInterceptor<T>): Lambda
}
export function hasInterceptors(interceptable: IInterceptable<any>) {
return (
interceptable.interceptors !== undefined &&
interceptable.interceptors.length > 0
)
}
// In 3.0, change to IArrayDidChange
export interface IArrayChange<T = any> {
type: 'update'
object: IObservableArray<T>
index: number
newValue: T
oldValue: T
}
// In 3.0, change to IArrayDidSplice
export interface IArraySplice<T = any> {
type: 'splice'
object: IObservableArray<T>
index: number
added: T[]
addedCount: number
removed: T[]
removedCount: number
}
export interface IArrayWillChange<T = any> {
type: 'update'
object: IObservableArray<T>
index: number
newValue: T
}
export interface IArrayWillSplice<T = any> {
type: 'splice'
object: IObservableArray<T>
index: number
added: T[]
removedCount: number
}
export interface IObservableObject {
'observable-object': IObservableObject
}
// export interface IAtom extends IObservable {
// reportObserved()
// reportChanged()
// }
export type IObjectDidChange =
| {
name: string
object: any
type: 'add'
newValue: any
}
| {
name: string
object: any
type: 'update'
oldValue: any
newValue: any
}
| {
name: string
object: any
type: 'remove'
oldValue: any
}
export type IObjectWillChange =
| {
object: any
type: 'update' | 'add'
name: string
newValue: any
}
| {
object: any
type: 'remove'
name: string
}