UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

311 lines (310 loc) 13.3 kB
/// <reference types="react" /> import { Schema, PlainObject, FunctionPropertyNames } from '../types'; import qs from 'qs'; import { IIRendererStore } from '../store'; import { autobindMethod } from './autobind'; import { RendererEnv } from '../env'; export declare function preventDefault(event: TouchEvent | Event): void; export declare function isMobile(): any; export declare function range(num: number, min: number, max: number): number; export declare function createObject(superProps?: { [propName: string]: any; }, props?: { [propName: string]: any; }, properties?: any): object; export declare function cloneObject(target: any, persistOwnProps?: boolean): any; /** * 给目标对象添加其他属性,可读取但是不会被遍历。 * @param target * @param props */ export declare function injectPropsToObject(target: any, props: any): any; export declare function extendObject(target: any, src?: any, persistOwnProps?: boolean): any; export declare function isSuperDataModified(data: any, prevData: any, store: IIRendererStore): boolean; export declare function syncDataFromSuper(data: any, superObject: any, prevSuperObject: any, store: IIRendererStore, force: boolean): any; /** * 生成 8 位随机数字。 * * @return {string} 8位随机数字 */ export declare function guid(): string; export declare function findIndex(arr: Array<any>, detect: (item?: any, index?: number) => boolean): number; export declare function getVariable(data: { [propName: string]: any; }, key: string | undefined, canAccessSuper?: boolean): any; export declare function setVariable(data: { [propName: string]: any; }, key: string, value: any, convertKeyToPath?: boolean): void; export declare function deleteVariable(data: { [propName: string]: any; }, key: string): void; export declare function hasOwnProperty(data: { [propName: string]: any; }, key: string): boolean; export declare function noop(): void; export declare function anyChanged(attrs: string | Array<string>, from: { [propName: string]: any; }, to: { [propName: string]: any; }, strictMode?: boolean): boolean; export declare function rmUndefined(obj: PlainObject): PlainObject; export declare function isObjectShallowModified(prev: any, next: any, strictMode?: boolean, ignoreUndefined?: boolean, statck?: Array<any>): boolean; export declare function isArrayChildrenModified(prev: Array<any>, next: Array<any>, strictMode?: boolean): boolean; export declare function immutableExtends(to: any, from: any, deep?: boolean): any; export declare function makeColumnClassBuild(steps: number, classNameTpl?: string): (schema: Schema) => any; export declare function hasVisibleExpression(schema: { visibleOn?: string; hiddenOn?: string; visible?: boolean; hidden?: boolean; }): string | undefined; export declare function isVisible(schema: { visibleOn?: string; hiddenOn?: string; visible?: boolean; hidden?: boolean; }, data?: object): boolean; export declare function isUnfolded(node: any, config: { foldedField?: string; unfoldedField?: string; }): boolean; /** * 过滤掉被隐藏的数组元素 */ export declare function visibilityFilter(items: any, data?: object): any; export declare function isDisabled(schema: { disabledOn?: string; disabled?: boolean; }, data?: object): boolean | "" | undefined; export declare function hasAbility(schema: any, ability: string, data?: object, defaultValue?: boolean): boolean; export declare function makeHorizontalDeeper(horizontal: { left: string; right: string; offset: string; leftFixed?: any; }, count: number): { left: string | number; right: string | number; offset: string | number; leftFixed?: any; }; export declare function promisify<T extends Function>(fn: T): (...args: Array<any>) => Promise<any> & { raw: T; }; export declare function getScrollParent(node: HTMLElement): HTMLElement | null; /** * Deep diff between two object, using lodash * @param {Object} object Object compared * @param {Object} base Object to compare with * @return {Object} Return a new object who represent the diff */ export declare function difference<T extends { [propName: string]: any; }, U extends { [propName: string]: any; }>(object: T, base: U, keepProps?: Array<string>): { [propName: string]: any; }; export declare const padArr: (arr: Array<any>, size?: number) => Array<Array<any>>; export declare function __uri(id: string): string; export declare function isObject(obj: any): any; export declare function isBreakpoint(str: string): boolean; export declare function until(fn: () => Promise<any>, when: (ret: any) => boolean, getCanceler: (fn: () => any) => void, interval?: number): Promise<unknown>; export declare function omitControls(controls: Array<any>, omitItems: Array<string>): Array<any>; export declare function isEmpty(thing: any): boolean; /** * 基于时间戳的 uuid * * @returns uniqueId */ export declare const uuid: () => string; export declare const uuidv4: () => string; export interface TreeItem { children?: TreeArray; [propName: string]: any; } export interface TreeArray extends Array<TreeItem> { } /** * 类似于 arr.map 方法,此方法主要针对类似下面示例的树形结构。 * [ * { * children: [] * }, * // 其他成员 * ] * * @param {Tree} tree 树形数据 * @param {Function} iterator 处理函数,返回的数据会被替换成新的。 * @return {Tree} 返回处理过的 tree */ export declare function mapTree<T extends TreeItem>(tree: Array<T>, iterator: (item: T, key: number, level: number, paths: Array<T>) => T, level?: number, depthFirst?: boolean, paths?: Array<T>): any[]; /** * 遍历树 * @param tree * @param iterator */ export declare function eachTree<T extends TreeItem>(tree: Array<T>, iterator: (item: T, key: number, level: number) => any, level?: number): void; /** * 在树中查找节点。 * @param tree * @param iterator */ export declare function findTree<T extends TreeItem>(tree: Array<T>, iterator: (item: T, key: number, level: number, paths: Array<T>) => any): T | null; /** * 在树中查找节点, 返回下标数组。 * @param tree * @param iterator */ export declare function findTreeIndex<T extends TreeItem>(tree: Array<T>, iterator: (item: T, key: number, level: number, paths: Array<T>) => any): Array<number> | undefined; export declare function getTree<T extends TreeItem>(tree: Array<T>, idx: Array<number> | number): T | undefined | null; /** * 过滤树节点 * * @param tree * @param iterator */ export declare function filterTree<T extends TreeItem>(tree: Array<T>, iterator: (item: T, key: number, level: number) => any, level?: number, depthFirst?: boolean): T[]; /** * 判断树中每个节点是否满足某个条件。 * @param tree * @param iterator */ export declare function everyTree<T extends TreeItem>(tree: Array<T>, iterator: (item: T, key: number, level: number, paths: Array<T>, indexes: Array<number>) => boolean, level?: number, paths?: Array<T>, indexes?: Array<number>): boolean; /** * 判断树中是否有某些节点满足某个条件。 * @param tree * @param iterator */ export declare function someTree<T extends TreeItem>(tree: Array<T>, iterator: (item: T, key: number, level: number, paths: Array<T>) => boolean): boolean; /** * 将树打平变成一维数组,可以传入第二个参数实现打平节点中的其他属性。 * * 比如: * * flattenTree([ * { * id: 1, * children: [ * { id: 2 }, * { id: 3 }, * ] * } * ], item => item.id); // 输出位 [1, 2, 3] * * @param tree * @param mapper */ export declare function flattenTree<T extends TreeItem>(tree: Array<T>): Array<T>; export declare function flattenTree<T extends TreeItem, U>(tree: Array<T>, mapper: (value: T, index: number) => U): Array<U>; /** * 操作树,遵循 imutable, 每次返回一个新的树。 * 类似数组的 splice 不同的地方这个方法不修改原始数据, * 同时第二个参数不是下标,而是下标数组,分别代表每一层的下标。 * * 至于如何获取下标数组,请查看 findTreeIndex * * @param tree * @param idx * @param deleteCount * @param ...items */ export declare function spliceTree<T extends TreeItem>(tree: Array<T>, idx: Array<number> | number, deleteCount?: number, ...items: Array<T>): Array<T>; /** * 计算树的深度 * @param tree */ export declare function getTreeDepth<T extends TreeItem>(tree: Array<T>): number; /** * 从树中获取某个值的所有祖先 * @param tree * @param value */ export declare function getTreeAncestors<T extends TreeItem>(tree: Array<T>, value: T, includeSelf?: boolean): Array<T> | null; /** * 从树中获取某个值的上级 * @param tree * @param value */ export declare function getTreeParent<T extends TreeItem>(tree: Array<T>, value: T): T | null; export declare function ucFirst(str?: string): string | undefined; export declare function lcFirst(str?: string): string; export declare function camel(str?: string): string; export declare function getWidthRate(value: any, strictMode?: boolean): number; export declare function getLevelFromClassName(value: string, defaultValue?: string): string; export declare function string2regExp(value: string, caseSensitive?: boolean): RegExp; export declare function pickEventsProps(props: any): any; export declare const autobind: typeof autobindMethod; export declare const bulkBindFunctions: <T extends { [propName: string]: any; }>(context: T, funNames: FunctionPropertyNames<T>[]) => void; export declare function sortArray<T extends any>(items: Array<T>, field: string, dir: -1 | 1): Array<T>; export declare function hasFile(object: any): boolean; export declare function qsstringify(data: any, options?: any, keepEmptyArray?: boolean): string; export declare function qsparse(data: string, options?: any): qs.ParsedQs; export declare function object2formData(data: any, options?: any, fd?: FormData): any; export declare function chainFunctions(...fns: Array<(...args: Array<any>) => void>): (...args: Array<any>) => void; export declare function chainEvents(props: any, schema: any): any; export declare function mapObject(value: any, fn: Function): any; export declare function loadScript(src: string): Promise<void>; export declare class SkipOperation extends Error { } /** * 将例如像 a.b.c 或 a[1].b 的字符串转换为路径数组 * * @param string 要转换的字符串 */ export declare const keyToPath: (string: string) => string[]; /** * 深度查找具有某个 key 名字段的对象,实际实现是 internalFindObjectsWithKey,这里包一层是为了做循环引用检测 * @param obj * @param key */ export declare function findObjectsWithKey(obj: any, key: string): any[]; /** * 获取浏览器滚动条宽度 https://stackoverflow.com/a/13382873 */ export declare function getScrollbarWidth(): number; export declare function getPropValue<T extends { value?: any; name?: string; data?: any; defaultValue?: any; }>(props: T, getter?: (props: T) => any): any; export declare function detectPropValueChanged<T extends { value?: any; name?: string; data?: any; defaultValue?: any; }>(props: T, prevProps: T, onChange: (value: any) => void, getter?: (props: T) => any): void; export declare function removeHTMLTag(str: string): string; /** * 将路径格式的value转换成普通格式的value值 * * @example * * 'a/b/c' => 'c'; * {label: 'A/B/C', value: 'a/b/c'} => {label: 'C', value: 'c'}; * 'a/b/c,a/d' => 'c,d'; * ['a/b/c', 'a/d'] => ['c', 'd']; * [{label: 'A/B/C', value: 'a/b/c'},{label: 'A/D', value: 'a/d'}] => [{label: 'C', value: 'c'},{label: 'D', value: 'd'}] */ export declare function normalizeNodePath(value: any, enableNodePath: boolean, labelField?: string, valueField?: string, pathSeparator?: string, delimiter?: string): { nodeValueArray: any[]; nodePathArray: any[]; }; export declare function isClickOnInput(e: React.MouseEvent<HTMLElement>): boolean; export declare function hashCode(s: string): number; /** * 遍历 schema * @param json * @param mapper */ export declare function JSONTraverse(json: any, mapper: (value: any, key: string | number, host: Object) => any): void; export declare function convertArrayValueToMoment(value: number[], types: string[], mom: moment.Moment): moment.Moment; export declare function getRange(min: number, max: number, step?: number): number[]; export declare function uniqueArr(arr: any[]): any[]; export declare function handleActionCallback_10003(data: any, store: any, // store handleAction?: any, closeDialog?: Function, // 关闭某页面打开的dialog returnValue?: boolean, env?: RendererEnv): boolean | undefined; export declare function repeatCount(count: number, iterator: (index: number) => any): any[];