UNPKG

@enact/core

Version:

Enact is an open source JavaScript framework containing everything you need to create a fast, scalable mobile or web application.

165 lines (159 loc) 5.28 kB
// Type definitions for core/util type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>; type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N; /** * Provides a convenient way to manage timed execution of functions. */ export declare class Job { constructor /** * Function to execute as the requested job. */( fn: Function /** * The number of milliseconds to wait before starting the job. */, timeout: number, ); /** * Starts the job. */ start(args?: any[]): void; /** * Starts the job in `timeout` milliseconds */ startAfter(timeout: number, args?: any[]): void; /** * Stops the job. */ stop(): void; /** * Executes the job immediately, then prevents any other calls to `throttle()` from running until the `timeout` configured at construction passes. */ throttle(...args: any[]): void; /** * Executes the job immediately, then prevents any other calls to `throttle()` from running for `timeout` milliseconds. */ throttleUntil(timeout: number, args?: any[]): void; /** * Executes job when the CPU is idle. */ idle(args?: any[]): void; /** * Executes job when the CPU is idle, or when the timeout is reached, whichever occurs first. */ idleUntil(timeout: number, args?: any[]): void; /** * Executes job before the next repaint. */ startRaf(args?: any[]): void; /** * Executes job before the next repaint after a given amount of timeout. */ startRafAfter(timeout: number, args?: any[]): void; /** * Starts the job when `promise` resolves. * * The job execution is tied to the resolution of the last `Promise` passed. Like other methods on `Job` , calling `promise()` again with a new `Promise` will block execution of the job until that new `Promise` resolves. Any previous `Promise` s will still resolve normally but will not trigger job execution. * * Unlike other methods on `Job` , `promise()` returns a `Promise` which is the result of calling `then()` on the passed `promise` . That `Promise` resolves with either the result of job execution or `undefined` if `Promise` was superseded by a subsequent `Promise` passed as described above. */ promise(promise: Promise): Promise; } /** * Capitalizes a given string (not locale-aware). */ export function cap(str: string): string; /** * Limits `value` to be between `min` and `max` . * * If `min` is greater than `max` , `min` is returned. */ export function clamp(min: number, max: number, value: number): number; /** * If `arg` is a function, return it. Otherwise returns a function that returns `arg` . * * Example: * ``` const returnsZero = coerceFunction(0); const returnsArg = coerceFunction(() => 0); ``` */ export function coerceFunction(arg: any): Function; /** * If `arg` is array-like, return it. Otherwise returns a single element array containing `arg` . * * Example: * ``` const returnsArray = coerceArray(0); // [0] const returnsArg = coerceArray([0]); // [0] const returnsObjArg = coerceArray({0: 'zeroth', length: 1}); ``` */ export function coerceArray(array: any): Array<any>; /** * Loosely determines if `tag` is a renderable component (either a string or a function). */ export function isRenderable(tag: any): boolean; /** * Removes ARIA-related props from `props` and returns them in a new object. * * Specifically, it removes the `role` prop and any prop prefixed with `aria-` . This is useful when redirecting ARIA-related props from a non-focusable root element to a focusable child element. */ export function extractAriaProps(props: object): object; /** * Gets the current timestamp of either `window.performance.now` or `Date.now` */ export function perfNow(): number; /** * Merges two class name maps into one. * * The resulting map will only contain the class names defined in the `baseMap` and will be appended with the value from `additiveMap` if it exists. Further, `allowedClassNames` may optionally limit which keys will be merged from `additiveMap` into `baseMap` . * * Example: * ``` // merges all matching class names from additiveMap1 with baseMap1 const newMap1 = mergeClassNameMaps(baseMap1, additiveMap1); // merge only 'a' and 'b' class names from additiveMap2 with baseMap2 const newMap2 = mergeClassNameMaps(baseMap2, additiveMap2, ['a', 'b']); ``` */ export function mergeClassNameMaps( baseMap: object, additiveMap: object, allowedClassNames?: string[], ): object; /** * Creates a function that memoizes the result of `fn` . * * Note that this function is a naive implementation and only checks the first argument for memoization. */ export function memoize(fn: Function): Function; /** * Maps over the `children` , discarding any `null` children before and after calling the callback. * * A replacement for `React.Children.map` . */ export function mapAndFilterChildren( children: any, callback: Function, filter?: Function, ): any; /** * Sets props that are missing or `undefined` to default values */ export function setDefaultProps(props: object, defaultProps: object): object; /** * Performs shallow comparison for given objects. */ export function shallowEqual(a: object, b: object): boolean;