import { Fqn } from '@likec4/core'; import { StoreSnapshot, Store } from '@xstate/store'; import { TreeCollection } from '@zag-js/collection'; import { PropsWithChildren } from 'react'; import { TreeNodeData } from '../useElementsTree'; type EditorPanelState = { searchInput: string; expandedValue: string[]; collection: TreeCollection; }; declare const createEditorPanelStore: ({ initial, sideEffects, }: { initial: TreeCollection; sideEffects: { onElementStateClick: (payload: { id: Fqn; }) => void; }; }) => Store; }; elementClick: { id: Fqn; }; }, { type: "inputKeyDown"; }>; export type EditorPanelStore = ReturnType; export declare const EditorPanelStoreProvider: (props: PropsWithChildren) => import("react/jsx-runtime").JSX.Element; export declare function selectEditorPanelState(selector: (state: EditorPanelState) => T): [ selector: (snapshot: StoreSnapshot) => T, compare: (a: NoInfer | undefined, b: NoInfer) => boolean ]; export declare function selectEditorPanelState(selector: (state: EditorPanelState) => T, compare: (a: NoInfer | undefined, b: NoInfer) => boolean): [ selector: (snapshot: StoreSnapshot) => T, compare: (a: NoInfer | undefined, b: NoInfer) => boolean ]; export declare function useEditorPanelStore(): Store; }; elementClick: { id: Fqn; }; }, { type: "inputKeyDown"; }>; export declare function useEditorPanelState(arg1: readonly [ (snapshot: StoreSnapshot) => T, (a: NoInfer | undefined, b: NoInfer) => boolean ]): T; export declare function useEditorPanelState(selector: (snapshot: StoreSnapshot) => T, compare?: (a: NoInfer | undefined, b: NoInfer) => boolean): T; /** * Hook to subscribe to editor panel events * @param args - The event name and handler function * @example * useOnEditorPanelEvent('inputKeyDown', () => { * console.log('Input key down event') * }) */ export declare function useOnEditorPanelEvent(...args: Parameters): void; /** * Hook to access the editor panel store trigger or create a wrapped trigger function * * @overload * @returns The store trigger object * * @overload * @template T - The parameter types for the wrapped trigger function * @param trigger - A function that receives the store trigger as the first parameter * @returns A wrapped function that calls the trigger with the store trigger prepended * * @example * // Get the trigger object directly * const trigger = useEditorPanelTrigger() * trigger.inputChange({ value: 'search' }) * * @example * // Create a wrapped trigger function * const handleInputChange = useEditorPanelTrigger((trigger, value: string) => { * trigger.inputChange({ value }) * }) * handleInputChange('search') */ export declare function useEditorPanelTrigger(): EditorPanelStore['trigger']; export declare function useEditorPanelTrigger(trigger: (...params: [trigger: EditorPanelStore['trigger'], ...T]) => void): (...args: T) => void; export {};