UNPKG

mobx-keystone-mindreframer

Version:

A MobX powered state management solution based on data trees with first class support for Typescript, snapshots, patches and much more

104 lines (85 loc) 3 kB
import { remove, set } from "mobx" import { fnModel } from "./fnModel" function _splice(this: any[], start: number, deleteCount?: number): any[] function _splice(this: any[], start: number, deleteCount: number, ...items: any[]): any[] function _splice(this: any[], ...args: any[]): any[] { return (this.splice as any)(...args) } const _arrayActions = fnModel<unknown[]>("mobx-keystone/arrayActions").actions({ set(index: number, value: any): void { set(this, index, value) }, delete(index: number): boolean { return remove(this, "" + index) }, setLength(length: number): void { this.length = length }, concat(...items: ConcatArray<any>[]): any[] { return this.concat(...items) }, copyWithin(target: number, start: number, end?: number | undefined): any[] { return this.copyWithin(target, start, end) }, fill(value: unknown, start?: number | undefined, end?: number | undefined): any[] { return this.fill(value, start, end) }, pop(): any | undefined { return this.pop() }, push(...items: any[]): number { return this.push(...items) }, reverse(): any[] { return this.reverse() }, shift(): any | undefined { return this.shift() }, slice(start?: number | undefined, end?: number | undefined): any[] { return this.slice(start, end) }, sort(compareFn?: ((a: any, b: any) => number) | undefined): any[] { return this.sort(compareFn) }, splice: _splice, unshift(...items: any[]): number { return this.unshift(...items) }, }) export const arrayActions = { set: _arrayActions.set as <T>(array: T[], index: number, value: T) => void, delete: _arrayActions.delete as <T>(array: T[], index: number) => boolean, setLength: _arrayActions.setLength as <T>(array: T[], length: number) => void, concat: _arrayActions.concat as <T>(array: T[], ...items: ConcatArray<T>[]) => T[], copyWithin: _arrayActions.copyWithin as <T>( array: T[], target: number, start: number, end?: number | undefined ) => T[], fill: _arrayActions.fill as <T>( array: T[], value: T, start?: number | undefined, end?: number | undefined ) => T[], pop: _arrayActions.pop as <T>(array: T[]) => T | undefined, push: _arrayActions.push as <T>(array: T[], ...items: T[]) => number, reverse: _arrayActions.reverse as <T>(array: T[]) => T[], shift: _arrayActions.shift as <T>(array: T[]) => T | undefined, slice: _arrayActions.slice as <T>( array: T[], start?: number | undefined, end?: number | undefined ) => T[], sort: _arrayActions.sort as <T>( array: T[], compareFn?: ((a: T, b: T) => number) | undefined ) => T[], splice: _arrayActions.splice as | (<T>(array: T[], start: number, deleteCount?: number) => T[]) | (<T>(array: T[], start: number, deleteCount: number, ...items: T[]) => T[]), unshift: _arrayActions.unshift as <T>(array: T[], ...items: T[]) => number, create: _arrayActions.create as <T>(data: T[]) => T[], }