alinea
Version:
Headless git-based CMS
17 lines (16 loc) • 988 B
TypeScript
import { Field, type FieldOptions } from './Field.js';
export interface FieldGetter {
<Value>(field: Field<Value>): Value;
}
export interface OptionsTracker<Options = any> {
(getter: FieldGetter): Partial<Options> | Promise<Partial<Options>>;
}
export interface ValueTracker<Value = any> {
(getter: FieldGetter): Value;
}
export declare function optionTrackerOf(field: Field): OptionsTracker<any> | undefined;
export declare function valueTrackerOf(field: Field): ValueTracker<any> | undefined;
export declare namespace track {
function options<StoredValue, QueryValue, OnChange, Options>(field: Field<StoredValue, QueryValue, OnChange, Options>, tracker: OptionsTracker<Options & FieldOptions<StoredValue>>): Field<StoredValue, QueryValue, OnChange, Options>;
function value<StoredValue, QueryValue, OnChange, Options>(field: Field<StoredValue, QueryValue, OnChange, Options>, tracker: ValueTracker<StoredValue>): Field<StoredValue, QueryValue, OnChange, Options>;
}