burdy
Version:
Open Source Headless Platform
47 lines (46 loc) • 2.23 kB
TypeScript
import React from 'react';
import { ModelObject } from '@admin/helpers/misc';
declare const useButtonHover: (debounce?: number) => (boolean | {
onMouseEnter: () => void;
onMouseLeave: () => void;
})[];
declare const useStorageState: <T>(name: string, defaultValue: T) => [T, React.Dispatch<T>];
interface BaseModel {
id: number | string;
}
declare type ModelMiddleware<T> = (models: T[]) => T[];
export declare type SetModelMiddleware<T> = (middleware: ModelMiddleware<T>[]) => void;
declare type CompareFunction<T> = (a: T, b: T) => number;
declare const useModelState: <T extends BaseModel>(defaultValue?: T[], sorter?: CompareFunction<T>) => {
arrayState: T[];
objectState: ModelObject<T>;
setObjectState: (models: ModelObject<T>) => void;
setArrayState: (models: T[]) => void;
create: (models: T[]) => void;
delete: (ids: number[]) => void;
update: (models: T[]) => void;
middleware: ModelMiddleware<T>[];
setMiddleware: React.Dispatch<React.SetStateAction<ModelMiddleware<T>[]>>;
removeSort: () => void;
setSort: React.Dispatch<React.SetStateAction<CompareFunction<T>>>;
};
declare class ModelStateWrapper<T extends BaseModel> {
useModelState: (defaultValue?: T[]) => {
arrayState: T[];
objectState: ModelObject<T>;
setObjectState: (models: ModelObject<T>) => void;
setArrayState: (models: T[]) => void;
create: (models: T[]) => void;
delete: (ids: number[]) => void;
update: (models: T[]) => void;
middleware: ModelMiddleware<T>[];
setMiddleware: React.Dispatch<React.SetStateAction<ModelMiddleware<T>[]>>;
removeSort: () => void;
setSort: React.Dispatch<React.SetStateAction<CompareFunction<T>>>;
};
}
declare type ModelState<T extends BaseModel> = ReturnType<ModelStateWrapper<T>['useModelState']>;
declare type RefChangeCallback<T> = (current: T, previous?: T) => (() => void) | void;
declare const useRefChange: <T = unknown>(callback: RefChangeCallback<T>, initial?: T) => import("@fluentui/react-hooks").RefCallback<T>;
declare const useAllowedPaths: () => any[];
export { useRefChange, useButtonHover, useStorageState, useModelState, useAllowedPaths, ModelState, };