import { DragAndDropContextProps, KeyboardBindings, TreeContextProps, TreeEnvironmentContextProps, TreeItemIndex, } from "../types"; export const resolveLiveDescriptor = ( descriptor: string, environment: TreeEnvironmentContextProps, dnd: DragAndDropContextProps, tree: TreeContextProps, keyboardBindings: Required ) => { const getItemTitle = (index: TreeItemIndex) => environment.getItemTitle(environment.items[index]); return descriptor.replace(/({[^\s}]+)}/g, (variableNameWithBrackets) => { const variableName = variableNameWithBrackets.slice(1, -1); switch (variableName) { case "treeLabel": return tree.treeLabel ?? ""; case "renamingItem": return tree.renamingItem ? getItemTitle(tree.renamingItem) : "None"; case "dragItems": return dnd.draggingItems?.map((item) => environment.getItemTitle(item)).join(", ") ?? "None"; default: return ""; } }); };