/** * @privateRemarks * Code borrowed from fast-element v2. We can remove post upgrade. * * @example * Reactive visitor example. * ```ts * const makeObserverVisitor: ObjectVisitor = { * visitObject: noop, * visitArray: noop, * visitProperty(object: any, propertyName: string, value: any): void { * Reflect.defineProperty(object, propertyName, { * enumerable: true, * get() { * Observable.track(object, propertyName); * return value; * }, * set(newValue: any) { * if (value !== newValue) { * value = newValue; * Observable.notify(object, propertyName); * } * }, * }); * }, * }; * ``` * * @beta */ export interface ObjectVisitor { visitObject(object: any, data: TVisitorData): void; visitArray(array: any[], data: TVisitorData): void; visitProperty(object: any, key: PropertyKey, value: any, data: TVisitorData): void; } /** * Visit object utility. * * @privateRemarks * Code borrowed from fast-element v2. We can remove post upgrade. * * @example * Reactive example. * ```ts * export function reactive(object: T, deep = false): T { * visitObject(object, deep, makeObserverVisitor, void 0, observed); * return object; * } * ``` * * @param object - The object. * @param deep - A flag to indicate if a recursive visit of sub objects should occur. * @param visitor - The defined {@link ObjectVisitor} logic. * @param data - Visitor data. * @param traversed - The traversed object set. * * @beta */ export declare function visitObject(object: any, deep: boolean, visitor: ObjectVisitor, data: TVisitorData, traversed: WeakSet | Set): void; //# sourceMappingURL=visitor.d.ts.map